chore: publish pearcord-delivery-receipts from pearcord workspace
This commit is contained in:
@@ -0,0 +1 @@
|
||||
node_modules/
|
||||
@@ -0,0 +1,145 @@
|
||||
# pearcord-delivery-receipts
|
||||
|
||||
Automation hook dispatch, delivery receipts, failure alerts, scheduled audit/digest exports, and archive mesh health. P2P-local; optional signed JSON stubs.
|
||||
|
||||
**v0.8.691 (Phase 715):** `listDeviceSyncJsonExports`, `listDiscoveryListingExportJsonExports`, `buildDeviceSyncJsonBody`, `buildDiscoveryListingExportJsonBody`, signed JSON ingest. Bundle: `test:ci-phase715`. See [DEVICE_DISCOVERY_JSON.md](../../docs/DEVICE_DISCOVERY_JSON.md).
|
||||
|
||||
**v0.8.690 (Phase 714):** `listSessionActivityJsonExports`, `listAvatarDecorationExportJsonExports`, `buildSessionActivityJsonBody`, `buildAvatarDecorationExportJsonBody`, signed JSON ingest. Bundle: `test:ci-phase714`. See [SESSION_ACTIVITY_JSON.md](../../docs/SESSION_ACTIVITY_JSON.md).
|
||||
|
||||
**v0.8.667 (Phase 692):** `listDigestRelayHandoffJsonExports`, `listArchivePeerExportJsonExports`, relay/archive JSON ingest duplicate flags. Bundle: `test:ci-phase692`. See [DIGEST_RELAY_HANDOFF_JSON.md](../../docs/DIGEST_RELAY_HANDOFF_JSON.md).
|
||||
|
||||
**v0.8.666 (Phase 691):** `listHookFailureDigestJsonExports`, `clearHookFailureDigestJsonExports`, digest JSON ingest duplicate flag. Bundle: `test:ci-phase691`. See [HOOK_FAILURE_DIGEST_JSON.md](../../docs/HOOK_FAILURE_DIGEST_JSON.md).
|
||||
|
||||
**v0.8.665 (Phase 690):** `listAuditExportJsonExports`, `clearModDigestNotifyPrefs`, JSON ingest duplicate flag. Bundle: `test:ci-phase690`. See [AUDIT_JSON_MESH.md](../../docs/AUDIT_JSON_MESH.md).
|
||||
|
||||
**v0.8.664 (Phase 689):** `clearDigestRelayHandoffs()`; ingest duplicate handoff flag; health dashboard rows via `buildAutomationHealthDashboard`. Bundle: `test:ci-phase689`. See [AUTOMATION_HEALTH.md](../../docs/AUTOMATION_HEALTH.md).
|
||||
|
||||
**v0.8.663 (Phase 688):** Registry modal UX in `delivery-ui.js`; platform `delivery-mixin.js` gossip dedupe + partition heal; `DeliveryReceiptStore.clearAll()`; view slice `deliveryReceiptRows` (256); deep link `?receipts=1`. Bundle: `test:ci-phase688` (app repo). See [DELIVERY_METRICS.md](../../docs/DELIVERY_METRICS.md).
|
||||
|
||||
**v0.8.566 (Phase 603):** Compliance panel live region `#compliance-panel-live`; compliance hub `aria-busy`; **compliance-errors** filter tighten; clipboard `compliancePanelLiveBusy`; platform `compliance.export` span; agentctl archive fetch/digest schedule refreshView re-verify. Bundle: `test:phase603-compliance` (app repo).
|
||||
|
||||
**v0.8.565 (Phase 602):** Audit panel live region `#audit-panel-live`; audit hub `aria-busy`; **audit-errors** filter tighten; clipboard `auditPanelLiveBusy`; agentctl setAuditExportSchedule + export/filter refreshView re-verify. Bundle: `test:phase602-audit` (app repo).
|
||||
|
||||
**v0.8.537 (Phase 574):** Platform `compliance.archive` span on `appendAuditExportArchive`; `digest.schedule` span on `setDigestExportSchedule`; compliance hub live region in app UI. Bundle: `test:phase574-compliance` (app repo). See [COMPLIANCE.md](../../docs/COMPLIANCE.md).
|
||||
|
||||
**v0.8.536 (Phase 573):** Platform `audit.schedule` span + error logging on `setAuditExportSchedule`; audit hub live region in app UI. Bundle: `test:phase573-audit` (app repo). See [AUDIT.md](../../docs/AUDIT.md).
|
||||
|
||||
**v0.8.450 (Phase 487):** Audit export archives and signed JSON metadata surfaced in UI compliance compositor + dev-log clipboard (`auditExportArchiveCount`, `auditExportSigned`). Bundle: `test:phase487-compliance` (app repo). See [COMPLIANCE.md](../../docs/COMPLIANCE.md).
|
||||
|
||||
## Mission
|
||||
|
||||
When `AppEventBridge` delivers an event, match enabled hooks, run actions (`log`, `notify`, `fanout-local`, `digest-relay`), record per-hook receipts, aggregate metrics, and support moderator dashboards (hook failure digests, audit export schedules, digest relay handoffs).
|
||||
|
||||
## When to use / not
|
||||
|
||||
**Use when:**
|
||||
|
||||
- Dispatching automation hooks and persisting `DELIVERY_STATUS` rows.
|
||||
- Dry-running hooks (`dryRunHook`, `buildSampleAppEvent`).
|
||||
- Managing receipt retention, failure prefs, or export schedules.
|
||||
|
||||
**Do not use when:**
|
||||
|
||||
- You only define hooks — use `pearcord-automation-export`.
|
||||
- You only sign relay handoffs — use `pearcord-digest-relay-plugin`.
|
||||
|
||||
## Public API (core)
|
||||
|
||||
| Export | Role |
|
||||
|--------|------|
|
||||
| `AutomationHookDispatcher` | `dispatch(hooks, eventPayload)` → receipts |
|
||||
| `DeliveryReceiptStore` | Receipts, retention, schedules, digest snapshots, relay prefs |
|
||||
| `HookFailureAlertStore` | Recent failed-hook alerts (gossip) |
|
||||
| `hookMatchesEvent`, `createDeliveryReceipt` | Matching + row builder |
|
||||
| `buildDeliveryMetrics`, `buildHookFailureDigest` | Dashboard rollups |
|
||||
| `dryRunHook`, `dryRunHooks`, `buildSampleAppEvent` | Settings dry-run |
|
||||
| `DELIVERY_STATUS` | `delivered`, `skipped`, `failed` |
|
||||
|
||||
## Public API (exports & dashboards)
|
||||
|
||||
| Export | Role |
|
||||
|--------|------|
|
||||
| `formatAuditExport`, `filterAuditEntries`, `AUDIT_FILTER` | JSON/JSON audit bundles |
|
||||
| `formatHookFailureDigestExport`, `signHookFailureDigestJson`, `verifyHookFailureDigestJson` | Digest JSON |
|
||||
| `signAuditExportJson`, `verifyAuditExportJson` | Audit JSON signing stub |
|
||||
| `buildAutomationScheduleDashboard`, `buildAutomationHealthDashboard` | Overdue tasks + mesh health |
|
||||
| `buildDigestRelayHandoff` | P2P email-style handoff bundle |
|
||||
| `formatAutomationScheduleDigestExport` | Schedule + failure bundle |
|
||||
| `computeArchivePeerHealthScore`, `applyArchivePeerHealthDecay` | Peer scores 0–100 |
|
||||
| `formatHookFailureDigestDmSummary` | Mod DM text |
|
||||
| `mergeHookFailureDigests` | Local vs mesh merge |
|
||||
|
||||
## Storage collections (selected)
|
||||
|
||||
`@pearcord/delivery-receipts`, `hook-failure-alerts`, audit/digest export schedules, automation digest snapshots, digest relay handoffs, JSON export blobs, archive peer seen rows. Stored under `{storagePath}/delivery-receipts` via `JsonStore`.
|
||||
|
||||
Defaults: max 256 receipts/guild (configurable 32–512), 7-day age prune.
|
||||
|
||||
## P2P surface
|
||||
|
||||
| Mechanism | Purpose |
|
||||
|-----------|---------|
|
||||
| `APP_EVENT_RECEIPT` gossip | Receipt replication |
|
||||
| Mesh slices | Retention prefs, failure prefs, schedules, JSON exports, handoffs |
|
||||
| Archive fetch | Pull audit archives / digest snapshots from peers with backoff |
|
||||
|
||||
Pearcord core does not send SMTP or HTTP; `digest-relay` actions build handoffs for external bridges.
|
||||
|
||||
## Platform integration
|
||||
|
||||
`pearcord-platform` constructs `DeliveryReceiptStore`, `HookFailureAlertStore`, and `AutomationHookDispatcher` per guild, wiring `onLog` / `onNotify` / `onDigestRelay` to UI and `pearcord-digest-relay-plugin`.
|
||||
|
||||
```javascript
|
||||
const { AutomationHookDispatcher, DeliveryReceiptStore } = require('pearcord-delivery-receipts')
|
||||
|
||||
const dispatcher = new AutomationHookDispatcher({
|
||||
store: receiptStore,
|
||||
deliveredBy: userId,
|
||||
onDigestRelay: async ({ hook, event }) => platform._buildDigestRelayHandoff(event)
|
||||
})
|
||||
await dispatcher.dispatch(hooks, appEventPayload)
|
||||
```
|
||||
|
||||
## UI / IPC (selected)
|
||||
|
||||
`dry-run-automation-hook`, `export-audit-log`, `sync-audit-export-json`, `export-hook-failure-digest`, `get-automation-schedule-dashboard`, `get-automation-health-dashboard`, `get-digest-relay-handoff`, `set-automation-receipt-retention`, schedule runners (`run-audit-export-now`, etc.).
|
||||
|
||||
## Hook matching
|
||||
|
||||
1. Hook enabled
|
||||
2. `categoryAllows(hook.categories, event.type)`
|
||||
3. If `filter.eventTypes` non-empty, type must be listed
|
||||
|
||||
Skipped hooks still get a `skipped` receipt.
|
||||
|
||||
## Code example
|
||||
|
||||
```javascript
|
||||
const {
|
||||
AutomationHookDispatcher,
|
||||
DeliveryReceiptStore,
|
||||
buildSampleAppEvent,
|
||||
dryRunHook
|
||||
} = require('pearcord-delivery-receipts')
|
||||
const { APP_EVENTS } = require('pearcord-app-events')
|
||||
|
||||
const sample = buildSampleAppEvent('g1', APP_EVENTS.MESSAGE_CREATE)
|
||||
const preview = dryRunHook(hook, sample)
|
||||
|
||||
const store = new DeliveryReceiptStore({ storagePath: './pearcord-storage' })
|
||||
await store.ready()
|
||||
store.setGuild('g1')
|
||||
const dispatcher = new AutomationHookDispatcher({ store })
|
||||
await dispatcher.dispatch([hook], sample)
|
||||
```
|
||||
|
||||
## Related modules
|
||||
|
||||
- `pearcord-app-events` — event source
|
||||
- `pearcord-automation-export` — hook definitions
|
||||
- `pearcord-digest-relay-plugin` — relay signing + webhook dry-run
|
||||
- `pearcord-integration-worker` — headless webhook POST
|
||||
|
||||
## Tests
|
||||
|
||||
Extensive platform smokes for schedules, JSON verify, archive fetch, dry-run hooks
|
||||
Generated
+89
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"name": "pearcord-delivery-receipts",
|
||||
"version": "0.1.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pearcord-delivery-receipts",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"bare-path": "^3.0.0",
|
||||
"pearcord-app-events": "file:../pearcord-app-events",
|
||||
"pearcord-db": "file:../pearcord-db",
|
||||
"pearcord-digest-relay-plugin": "file:../pearcord-digest-relay-plugin",
|
||||
"pearcord-shared": "file:../pearcord-shared"
|
||||
}
|
||||
},
|
||||
"../pearcord-app-events": {
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"bare-events": "^2.8.0",
|
||||
"pearcord-bot-events": "file:../pearcord-bot-events",
|
||||
"pearcord-shared": "file:../pearcord-shared"
|
||||
}
|
||||
},
|
||||
"../pearcord-db": {
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"bare-fs": "^4.0.0",
|
||||
"bare-path": "^3.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"hyperdb": "^5.0.0",
|
||||
"hyperschema": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"../pearcord-digest-relay-plugin": {
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"b4a": "^1.6.7",
|
||||
"bare-fetch": "^3.0.0",
|
||||
"hypercore-crypto": "^3.4.1",
|
||||
"pearcord-shared": "file:../pearcord-shared"
|
||||
}
|
||||
},
|
||||
"../pearcord-shared": {
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"b4a": "^1.6.7",
|
||||
"compact-encoding": "^2.0.0",
|
||||
"hypercore-crypto": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-os": {
|
||||
"version": "3.9.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.1.tgz",
|
||||
"integrity": "sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"bare": ">=1.14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
|
||||
"integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-os": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/pearcord-app-events": {
|
||||
"resolved": "../pearcord-app-events",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/pearcord-db": {
|
||||
"resolved": "../pearcord-db",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/pearcord-digest-relay-plugin": {
|
||||
"resolved": "../pearcord-digest-relay-plugin",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/pearcord-shared": {
|
||||
"resolved": "../pearcord-shared",
|
||||
"link": true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "pearcord-delivery-receipts",
|
||||
"version": "0.1.0",
|
||||
"main": "index.js",
|
||||
"type": "commonjs",
|
||||
"description": "P2P automation hook dispatch and APP_EVENT delivery receipts",
|
||||
"dependencies": {
|
||||
"bare-path": "^3.0.0",
|
||||
"pearcord-digest-relay-plugin": "git+https://git.ssh.surf/pearcord/pearcord-digest-relay-plugin.git#main",
|
||||
"pearcord-app-events": "git+https://git.ssh.surf/pearcord/pearcord-app-events.git#main",
|
||||
"pearcord-db": "git+https://git.ssh.surf/pearcord/pearcord-db.git#main",
|
||||
"pearcord-shared": "git+https://git.ssh.surf/pearcord/pearcord-shared.git#main"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user