opentasks 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +218 -49
- package/dist/cli.d.ts +20 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +451 -15
- package/dist/cli.js.map +1 -1
- package/dist/client/client.d.ts +54 -0
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +148 -4
- package/dist/client/client.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/core/discover.d.ts.map +1 -1
- package/dist/core/discover.js +7 -2
- package/dist/core/discover.js.map +1 -1
- package/dist/core/hash.d.ts.map +1 -1
- package/dist/core/hash.js +7 -0
- package/dist/core/hash.js.map +1 -1
- package/dist/core/id.d.ts +1 -1
- package/dist/core/id.d.ts.map +1 -1
- package/dist/core/id.js +2 -0
- package/dist/core/id.js.map +1 -1
- package/dist/core/worktree.js +4 -4
- package/dist/core/worktree.js.map +1 -1
- package/dist/daemon/events.d.ts +82 -0
- package/dist/daemon/events.d.ts.map +1 -0
- package/dist/daemon/events.js +71 -0
- package/dist/daemon/events.js.map +1 -0
- package/dist/daemon/flush.d.ts.map +1 -1
- package/dist/daemon/flush.js +12 -2
- package/dist/daemon/flush.js.map +1 -1
- package/dist/daemon/health-counters.d.ts +38 -0
- package/dist/daemon/health-counters.d.ts.map +1 -0
- package/dist/daemon/health-counters.js +42 -0
- package/dist/daemon/health-counters.js.map +1 -0
- package/dist/daemon/idempotency.d.ts +50 -0
- package/dist/daemon/idempotency.d.ts.map +1 -0
- package/dist/daemon/idempotency.js +104 -0
- package/dist/daemon/idempotency.js.map +1 -0
- package/dist/daemon/index.d.ts +2 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +1 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/ipc.d.ts +32 -2
- package/dist/daemon/ipc.d.ts.map +1 -1
- package/dist/daemon/ipc.js +54 -3
- package/dist/daemon/ipc.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +302 -8
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/location-state.d.ts +60 -1
- package/dist/daemon/location-state.d.ts.map +1 -1
- package/dist/daemon/location-state.js +136 -31
- package/dist/daemon/location-state.js.map +1 -1
- package/dist/daemon/methods/context-files.d.ts.map +1 -1
- package/dist/daemon/methods/context-files.js +4 -3
- package/dist/daemon/methods/context-files.js.map +1 -1
- package/dist/daemon/methods/events.d.ts +22 -0
- package/dist/daemon/methods/events.d.ts.map +1 -0
- package/dist/daemon/methods/events.js +30 -0
- package/dist/daemon/methods/events.js.map +1 -0
- package/dist/daemon/methods/graph.d.ts +7 -0
- package/dist/daemon/methods/graph.d.ts.map +1 -1
- package/dist/daemon/methods/graph.js +24 -14
- package/dist/daemon/methods/graph.js.map +1 -1
- package/dist/daemon/methods/lifecycle.d.ts +16 -0
- package/dist/daemon/methods/lifecycle.d.ts.map +1 -1
- package/dist/daemon/methods/lifecycle.js +3 -1
- package/dist/daemon/methods/lifecycle.js.map +1 -1
- package/dist/daemon/methods/location.js.map +1 -1
- package/dist/daemon/methods/sync.d.ts +113 -0
- package/dist/daemon/methods/sync.d.ts.map +1 -0
- package/dist/daemon/methods/sync.js +158 -0
- package/dist/daemon/methods/sync.js.map +1 -0
- package/dist/daemon/methods/tools.d.ts.map +1 -1
- package/dist/daemon/methods/tools.js +42 -8
- package/dist/daemon/methods/tools.js.map +1 -1
- package/dist/daemon/methods/watch.d.ts +24 -0
- package/dist/daemon/methods/watch.d.ts.map +1 -1
- package/dist/daemon/methods/watch.js +178 -88
- package/dist/daemon/methods/watch.js.map +1 -1
- package/dist/daemon/sessionlog-watcher.d.ts.map +1 -1
- package/dist/daemon/sessionlog-watcher.js +4 -0
- package/dist/daemon/sessionlog-watcher.js.map +1 -1
- package/dist/graph/EdgeTypeRegistry.d.ts.map +1 -1
- package/dist/graph/EdgeTypeRegistry.js +32 -0
- package/dist/graph/EdgeTypeRegistry.js.map +1 -1
- package/dist/graph/FederatedGraph.d.ts.map +1 -1
- package/dist/graph/GraphologyAdapter.d.ts.map +1 -1
- package/dist/graph/GraphologyAdapter.js.map +1 -1
- package/dist/graph/HydratingFederatedGraph.d.ts.map +1 -1
- package/dist/graph/HydratingFederatedGraph.js +1 -1
- package/dist/graph/HydratingFederatedGraph.js.map +1 -1
- package/dist/graph/attempts.d.ts +50 -0
- package/dist/graph/attempts.d.ts.map +1 -0
- package/dist/graph/attempts.js +51 -0
- package/dist/graph/attempts.js.map +1 -0
- package/dist/graph/coordination.d.ts +4 -2
- package/dist/graph/coordination.d.ts.map +1 -1
- package/dist/graph/coordination.js +77 -85
- package/dist/graph/coordination.js.map +1 -1
- package/dist/graph/expansion.d.ts.map +1 -1
- package/dist/graph/expansion.js +1 -1
- package/dist/graph/expansion.js.map +1 -1
- package/dist/graph/git-graph-syncer.d.ts +24 -0
- package/dist/graph/git-graph-syncer.d.ts.map +1 -1
- package/dist/graph/git-graph-syncer.js +111 -26
- package/dist/graph/git-graph-syncer.js.map +1 -1
- package/dist/graph/provider-store.d.ts +12 -1
- package/dist/graph/provider-store.d.ts.map +1 -1
- package/dist/graph/provider-store.js +35 -8
- package/dist/graph/provider-store.js.map +1 -1
- package/dist/graph/query.d.ts.map +1 -1
- package/dist/graph/query.js +18 -2
- package/dist/graph/query.js.map +1 -1
- package/dist/graph/store.d.ts +18 -2
- package/dist/graph/store.d.ts.map +1 -1
- package/dist/graph/store.js +43 -0
- package/dist/graph/store.js.map +1 -1
- package/dist/graph/sync.js +1 -1
- package/dist/graph/sync.js.map +1 -1
- package/dist/graph/types.d.ts +9 -1
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/graph/types.js.map +1 -1
- package/dist/graph/validation.d.ts.map +1 -1
- package/dist/graph/validation.js +20 -2
- package/dist/graph/validation.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/materialization/archiver.d.ts.map +1 -1
- package/dist/materialization/archiver.js.map +1 -1
- package/dist/materialization/snapshot.d.ts.map +1 -1
- package/dist/materialization/snapshot.js +1 -1
- package/dist/materialization/snapshot.js.map +1 -1
- package/dist/materialization/types.d.ts +7 -5
- package/dist/materialization/types.d.ts.map +1 -1
- package/dist/materialization/types.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +308 -11
- package/dist/mcp/server.js.map +1 -1
- package/dist/providers/beads.d.ts.map +1 -1
- package/dist/providers/beads.js +2 -0
- package/dist/providers/beads.js.map +1 -1
- package/dist/providers/claude-tasks.d.ts.map +1 -1
- package/dist/providers/claude-tasks.js.map +1 -1
- package/dist/providers/global.js +1 -1
- package/dist/providers/global.js.map +1 -1
- package/dist/providers/location.d.ts.map +1 -1
- package/dist/providers/location.js.map +1 -1
- package/dist/providers/map-client-factory.d.ts.map +1 -1
- package/dist/providers/map-client-factory.js +1 -1
- package/dist/providers/map-client-factory.js.map +1 -1
- package/dist/providers/map-connector.js +1 -1
- package/dist/providers/map-connector.js.map +1 -1
- package/dist/providers/map-event-bridge.d.ts.map +1 -1
- package/dist/providers/map-event-bridge.js +1 -0
- package/dist/providers/map-event-bridge.js.map +1 -1
- package/dist/providers/map.d.ts.map +1 -1
- package/dist/providers/map.js +5 -2
- package/dist/providers/map.js.map +1 -1
- package/dist/providers/native.d.ts.map +1 -1
- package/dist/providers/native.js +21 -8
- package/dist/providers/native.js.map +1 -1
- package/dist/providers/registry.js +1 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/sudocode.d.ts.map +1 -1
- package/dist/providers/sudocode.js +5 -11
- package/dist/providers/sudocode.js.map +1 -1
- package/dist/providers/traits/Reconcilable.d.ts.map +1 -1
- package/dist/providers/traits/TaskManageable.d.ts +15 -1
- package/dist/providers/traits/TaskManageable.d.ts.map +1 -1
- package/dist/providers/traits/TaskManageable.js +26 -0
- package/dist/providers/traits/TaskManageable.js.map +1 -1
- package/dist/providers/traits/Watchable.d.ts +6 -0
- package/dist/providers/traits/Watchable.d.ts.map +1 -1
- package/dist/providers/traits/Watchable.js.map +1 -1
- package/dist/providers/types.d.ts +1 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/schema/edges.d.ts +5 -1
- package/dist/schema/edges.d.ts.map +1 -1
- package/dist/schema/index.d.ts +2 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/nodes.d.ts +55 -2
- package/dist/schema/nodes.d.ts.map +1 -1
- package/dist/schema/storage.d.ts +2 -0
- package/dist/schema/storage.d.ts.map +1 -1
- package/dist/schema/validation.d.ts +6 -2
- package/dist/schema/validation.d.ts.map +1 -1
- package/dist/schema/validation.js +18 -1
- package/dist/schema/validation.js.map +1 -1
- package/dist/sessionlog/agent/registry.js.map +1 -1
- package/dist/sessionlog/agent/session-types.d.ts.map +1 -1
- package/dist/sessionlog/agent/types.d.ts.map +1 -1
- package/dist/sessionlog/commands/clean.js +1 -1
- package/dist/sessionlog/commands/clean.js.map +1 -1
- package/dist/sessionlog/commands/disable.d.ts.map +1 -1
- package/dist/sessionlog/commands/disable.js.map +1 -1
- package/dist/sessionlog/commands/doctor.js +1 -1
- package/dist/sessionlog/commands/doctor.js.map +1 -1
- package/dist/sessionlog/commands/enable.js +1 -1
- package/dist/sessionlog/commands/enable.js.map +1 -1
- package/dist/sessionlog/commands/resume.js +1 -1
- package/dist/sessionlog/commands/resume.js.map +1 -1
- package/dist/sessionlog/commands/rewind.d.ts.map +1 -1
- package/dist/sessionlog/commands/rewind.js +1 -1
- package/dist/sessionlog/commands/rewind.js.map +1 -1
- package/dist/sessionlog/commands/status.d.ts.map +1 -1
- package/dist/sessionlog/commands/status.js.map +1 -1
- package/dist/sessionlog/hooks/lifecycle.d.ts.map +1 -1
- package/dist/sessionlog/hooks/lifecycle.js +3 -3
- package/dist/sessionlog/hooks/lifecycle.js.map +1 -1
- package/dist/sessionlog/security/redaction.js +1 -1
- package/dist/sessionlog/security/redaction.js.map +1 -1
- package/dist/sessionlog/store/checkpoint-store.d.ts.map +1 -1
- package/dist/sessionlog/store/checkpoint-store.js +2 -2
- package/dist/sessionlog/store/checkpoint-store.js.map +1 -1
- package/dist/sessionlog/store/native-store.d.ts.map +1 -1
- package/dist/sessionlog/store/native-store.js.map +1 -1
- package/dist/sessionlog/store/session-store.d.ts.map +1 -1
- package/dist/sessionlog/store/session-store.js +1 -1
- package/dist/sessionlog/store/session-store.js.map +1 -1
- package/dist/sessionlog/strategy/attribution.js +2 -2
- package/dist/sessionlog/strategy/attribution.js.map +1 -1
- package/dist/sessionlog/strategy/common.d.ts +1 -1
- package/dist/sessionlog/strategy/common.d.ts.map +1 -1
- package/dist/sessionlog/strategy/common.js +3 -3
- package/dist/sessionlog/strategy/common.js.map +1 -1
- package/dist/sessionlog/strategy/content-overlap.d.ts.map +1 -1
- package/dist/sessionlog/strategy/content-overlap.js +1 -1
- package/dist/sessionlog/strategy/content-overlap.js.map +1 -1
- package/dist/sessionlog/strategy/manual-commit.d.ts.map +1 -1
- package/dist/sessionlog/strategy/manual-commit.js +6 -16
- package/dist/sessionlog/strategy/manual-commit.js.map +1 -1
- package/dist/sessionlog/utils/preview-rewind.d.ts.map +1 -1
- package/dist/sessionlog/utils/preview-rewind.js +1 -1
- package/dist/sessionlog/utils/preview-rewind.js.map +1 -1
- package/dist/sessionlog/utils/trailers.d.ts.map +1 -1
- package/dist/sessionlog/utils/trailers.js +0 -1
- package/dist/sessionlog/utils/trailers.js.map +1 -1
- package/dist/storage/interface.d.ts +64 -0
- package/dist/storage/interface.d.ts.map +1 -1
- package/dist/storage/interface.js.map +1 -1
- package/dist/storage/jsonl.js +2 -2
- package/dist/storage/jsonl.js.map +1 -1
- package/dist/storage/sqlite-schema.d.ts +8 -2
- package/dist/storage/sqlite-schema.d.ts.map +1 -1
- package/dist/storage/sqlite-schema.js +10 -1
- package/dist/storage/sqlite-schema.js.map +1 -1
- package/dist/storage/sqlite.d.ts +16 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +134 -2
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/tools/link.js +1 -1
- package/dist/tools/link.js.map +1 -1
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +8 -29
- package/dist/tools/query.js.map +1 -1
- package/dist/tools/task.d.ts.map +1 -1
- package/dist/tools/task.js +115 -5
- package/dist/tools/task.js.map +1 -1
- package/dist/tools/types.d.ts +84 -3
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/version.d.ts +14 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +44 -0
- package/dist/version.js.map +1 -0
- package/package.json +32 -7
- package/skills/opentasks/SKILL.md +226 -0
- package/skills/opentasks/dependency-management.md +119 -0
- package/skills/opentasks/feedback-and-review.md +100 -0
- package/skills/opentasks/linking-external-data.md +103 -0
- package/skills/opentasks/spec-to-implementation.md +171 -0
package/dist/core/hash.js
CHANGED
|
@@ -39,6 +39,13 @@ export function computeContentHash(node) {
|
|
|
39
39
|
substantive.feedback_type = node.feedback_type;
|
|
40
40
|
substantive.target_anchor = node.target_anchor;
|
|
41
41
|
}
|
|
42
|
+
if (node.type === 'attempt') {
|
|
43
|
+
// The task being attempted + the assignee identify the attempt. The
|
|
44
|
+
// outcome/evidence live in metadata (excluded from the content hash by
|
|
45
|
+
// design) — an attempt is identified by id, not content-deduped.
|
|
46
|
+
substantive.target_id = node.target_id;
|
|
47
|
+
substantive.assignee = node.assignee;
|
|
48
|
+
}
|
|
42
49
|
if (node.type === 'external') {
|
|
43
50
|
substantive.uri = node.uri;
|
|
44
51
|
substantive.source = node.source;
|
package/dist/core/hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/core/hash.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,4CAA4C;IAC5C,MAAM,WAAW,GAA4B;QAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACnD,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,uCAAuC;IACvC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/C,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IACjD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC3B,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,iDAAiD;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAChE,CAAC;IAEF,mCAAmC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,CAAa,EAAE,CAAa;IACvD,OAAO,kBAAkB,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/core/hash.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,4CAA4C;IAC5C,MAAM,WAAW,GAA4B;QAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACnD,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,uCAAuC;IACvC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/C,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IACjD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,oEAAoE;QACpE,uEAAuE;QACvE,iEAAiE;QACjE,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC3B,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,iDAAiD;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAChE,CAAC;IAEF,mCAAmC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,CAAa,EAAE,CAAa;IACvD,OAAO,kBAAkB,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
package/dist/core/id.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* Node type for ID generation
|
|
9
9
|
*/
|
|
10
|
-
export type IdNodeType = 'context' | 'task' | 'feedback' | 'external' | 'edge';
|
|
10
|
+
export type IdNodeType = 'context' | 'task' | 'feedback' | 'external' | 'attempt' | 'edge';
|
|
11
11
|
/**
|
|
12
12
|
* Convert a hex string to base36
|
|
13
13
|
*/
|
package/dist/core/id.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/core/id.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/core/id.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAmB3F;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAe/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,aAAa,GAAE,MAAU,GAAG,WAAW,CAkB5F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,GAAG,MAAM,EACzB,IAAI,EAAE,MAAM,EACZ,aAAa,GAAE,MAAU,GACxB,WAAW,CAQb;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAc7D"}
|
package/dist/core/id.js
CHANGED
|
@@ -13,6 +13,7 @@ const TYPE_PREFIXES = {
|
|
|
13
13
|
task: 't',
|
|
14
14
|
feedback: 'f',
|
|
15
15
|
external: 'e',
|
|
16
|
+
attempt: 'a',
|
|
16
17
|
edge: 'x',
|
|
17
18
|
};
|
|
18
19
|
/**
|
|
@@ -134,6 +135,7 @@ export function inferTypeFromId(id) {
|
|
|
134
135
|
t: 'task',
|
|
135
136
|
f: 'feedback',
|
|
136
137
|
e: 'external',
|
|
138
|
+
a: 'attempt',
|
|
137
139
|
x: 'edge',
|
|
138
140
|
};
|
|
139
141
|
return prefixToType[prefix] || null;
|
package/dist/core/id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/core/id.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/core/id.ts"],"names":[],"mappings":"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"}
|
package/dist/core/worktree.js
CHANGED
|
@@ -82,7 +82,7 @@ function getRegistryLockPath(gitCommonDir) {
|
|
|
82
82
|
*/
|
|
83
83
|
function withRegistryLock(gitCommonDir, fn) {
|
|
84
84
|
const lockPath = getRegistryLockPath(gitCommonDir);
|
|
85
|
-
const
|
|
85
|
+
const _lock = new FileLock({ lockPath, timeout: 5000 });
|
|
86
86
|
// Synchronously spin-acquire: create lock file exclusively
|
|
87
87
|
const dir = path.dirname(lockPath);
|
|
88
88
|
fs.mkdirSync(dir, { recursive: true });
|
|
@@ -107,7 +107,7 @@ function withRegistryLock(gitCommonDir, fn) {
|
|
|
107
107
|
try {
|
|
108
108
|
fs.unlinkSync(lockPath);
|
|
109
109
|
}
|
|
110
|
-
catch { }
|
|
110
|
+
catch { /* best-effort cleanup */ }
|
|
111
111
|
continue;
|
|
112
112
|
}
|
|
113
113
|
}
|
|
@@ -115,7 +115,7 @@ function withRegistryLock(gitCommonDir, fn) {
|
|
|
115
115
|
try {
|
|
116
116
|
fs.unlinkSync(lockPath);
|
|
117
117
|
}
|
|
118
|
-
catch { }
|
|
118
|
+
catch { /* best-effort cleanup */ }
|
|
119
119
|
continue;
|
|
120
120
|
}
|
|
121
121
|
if (Date.now() - startTime >= 5000) {
|
|
@@ -139,7 +139,7 @@ function withRegistryLock(gitCommonDir, fn) {
|
|
|
139
139
|
try {
|
|
140
140
|
fs.unlinkSync(lockPath);
|
|
141
141
|
}
|
|
142
|
-
catch { }
|
|
142
|
+
catch { /* best-effort cleanup */ }
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
function isProcessAlive(pid) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/core/worktree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/core/worktree.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,eAAe,EACf,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAmDnD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,gCAAgC,EAAE;YACxD,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,iCAAiC,EAAE;YACzD,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAoB,EAAE,QAA0B;IACpF,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,YAAoB;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAI,YAAoB,EAAE,EAAW;IAC5D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAExD,2DAA2D;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CACpB,QAAQ,EACR,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CACnE,CAAC;YACF,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACpD,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,iDAAiD;gBACjD,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzC,MAAM,OAAO,GACX,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjF,IAAI,OAAO,EAAE,CAAC;wBACZ,IAAI,CAAC;4BACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBAC1B,CAAC;wBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;wBACrC,SAAS;oBACX,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC;wBACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAC1B,CAAC;oBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;oBACrC,SAAS;gBACX,CAAC;gBACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACnE,CAAC;gBACD,mCAAmC;gBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;oBAC9B,UAAU;gBACZ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoB,EAAE,KAAoB;IACzE,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;QAClC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAEpD,uCAAuC;QACvC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7E,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE/B,qBAAqB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAoB,EAAE,IAAY;IACnE,OAAO,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;QACzC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAE9D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACvE,qBAAqB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE9C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB,EAAE,UAAkB;IACnE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEpD,OAAO,CACL,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;QACrD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjF,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,YAAoB;IAEpB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEpD,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;QAC7E,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,UAAkB,EAClB,oBAA4B,EAC5B,UAAgC,EAAE;IAElC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,QAAQ,CAAC,qBAAqB,cAAc,SAAS,MAAM,GAAG,EAAE;gBAC9D,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6CAA6C;YAC7C,IAAI,CAAC;gBACH,QAAQ,CAAC,qBAAqB,cAAc,MAAM,MAAM,GAAG,EAAE;oBAC3D,GAAG,EAAE,UAAU;oBACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;iBAChC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,kCAAmC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACnE,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,4BAA4B;IAC5B,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC;QAC/C,CAAC,CAAC,4BAA4B,CAAC,kBAAkB,CAAC,CAAC;IAErD,0BAA0B;IAC1B,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CACzE,CAAC;QACF,WAAW,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,yBAAyB;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;IACtC,MAAM,cAAc,GAClB,OAAO,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC,CAAC;IAEjF,MAAM,YAAY,GAA4B;QAC5C,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU,EAAE;YAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;SACpC;QACD,IAAI;QACJ,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;gBAC7D,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;aAChC;SACF;QACD,SAAS,EACP,IAAI,KAAK,QAAQ;YACf,CAAC,CAAC;gBACE;oBACE,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;oBAC7B,OAAO,EAAE,GAAG;oBACZ,MAAM,EAAE,eAAe,cAAc,GAAG;oBACxC,QAAQ,EAAE,GAAG;oBACb,QAAQ,EAAE,OAAO;iBAClB;aACF;YACH,CAAC,CAAC,EAAE;KACT,CAAC;IAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAC5C,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAC5C,OAAO,CACR,CAAC;IAEF,8BAA8B;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,uBAAuB;IACvB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,EAAE,CAAC,aAAa,CACd,aAAa,EACb;YACE,UAAU;YACV,cAAc;YACd,cAAc;YACd,YAAY;YACZ,aAAa;YACb,aAAa;YACb,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,OAAO,CACR,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC;QACH,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;IAED,uBAAuB;IACvB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,gBAAgB,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;IAC/E,MAAM,KAAK,GAAkB;QAC3B,IAAI,EAAE,cAAc;QACpB,aAAa,EAAE,kBAAkB;QACjC,IAAI,EAAE,UAAU;QAChB,MAAM;QACN,IAAI;QACJ,cAAc,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;KAC/D,CAAC;IACF,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAEtC,wCAAwC;IACxC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE,CAAiB,CAAC;QACtE,MAAM,OAAO,GAAe;YAC1B,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;YAC7D,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;SACpC,CAAC;QACF,aAAa,CAAC,WAAW,GAAG;YAC1B,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;YAC/D,OAAO;SACR,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAkB,EAClB,oBAA4B,EAC5B,UAAmC,EAAE;IAErC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,8BAA8B;IAC9B,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAE7C,oCAAoC;IACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9E,aAAa,CAAC,WAAW,GAAG,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAClE,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CACzC,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5D,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,QAAQ,CAAC,wBAAwB,KAAK,CAAC,IAAI,WAAW,EAAE;gBACtD,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Manager
|
|
3
|
+
*
|
|
4
|
+
* Durable, replayable in-memory event stream for the daemon's watch channel.
|
|
5
|
+
* Each emitted change event gets a monotonic `seq` within a per-process
|
|
6
|
+
* `epoch`; the last N are retained in a ring buffer so a reconnecting subscriber
|
|
7
|
+
* can replay what it missed via `since(cursor)`.
|
|
8
|
+
*
|
|
9
|
+
* Scope (P3 M2): single process, in-memory. It survives client disconnects
|
|
10
|
+
* within the buffer window, NOT daemon restarts — a restart starts a fresh
|
|
11
|
+
* epoch, so any cursor from a prior epoch resolves to `resync` and the client
|
|
12
|
+
* does a full re-query. A durable on-disk log is intentionally deferred; the
|
|
13
|
+
* ring buffer covers the reconnect-gap case that matters for agents.
|
|
14
|
+
*/
|
|
15
|
+
import type { ProviderNodeChangeEvent } from '../providers/traits/Watchable.js';
|
|
16
|
+
/** Default ring-buffer capacity (number of events retained for replay). */
|
|
17
|
+
export declare const DEFAULT_EVENT_BUFFER_SIZE = 1024;
|
|
18
|
+
/** A change event stamped with its position in the stream. */
|
|
19
|
+
export interface StampedEvent {
|
|
20
|
+
/** Monotonic sequence within `epoch`, starting at 1. */
|
|
21
|
+
seq: number;
|
|
22
|
+
/** Per-daemon-process identity; changes on restart. */
|
|
23
|
+
epoch: string;
|
|
24
|
+
/**
|
|
25
|
+
* ISO timestamp the event entered the stream (stream time, not node time).
|
|
26
|
+
* Replay-only: surfaced via `events.since` but intentionally omitted from the
|
|
27
|
+
* live `watch.event` broadcast payload (which forwards only seq/epoch).
|
|
28
|
+
*/
|
|
29
|
+
emittedAt: string;
|
|
30
|
+
/** The underlying graph change. */
|
|
31
|
+
event: ProviderNodeChangeEvent;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The `watch.event` notification payload as seen by subscribers: the underlying
|
|
35
|
+
* change, plus its stream position when an event manager is active. `seq`/`epoch`
|
|
36
|
+
* are absent on the unstamped path (no event manager wired — the M1 behavior),
|
|
37
|
+
* so consumers must treat them as optional.
|
|
38
|
+
*/
|
|
39
|
+
export type WatchEventPayload = ProviderNodeChangeEvent & {
|
|
40
|
+
seq?: number;
|
|
41
|
+
epoch?: string;
|
|
42
|
+
};
|
|
43
|
+
/** Opaque resume position a client persists between connections. */
|
|
44
|
+
export interface EventCursor {
|
|
45
|
+
epoch: string;
|
|
46
|
+
seq: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Result of `since`. `resync: true` means the cursor cannot be served — either
|
|
50
|
+
* the epoch changed (daemon restarted) or the requested events were evicted
|
|
51
|
+
* from the ring buffer — and the caller should re-query current state instead
|
|
52
|
+
* of relying on the delta.
|
|
53
|
+
*/
|
|
54
|
+
export type SinceResult = {
|
|
55
|
+
epoch: string;
|
|
56
|
+
resync?: false;
|
|
57
|
+
events: StampedEvent[];
|
|
58
|
+
} | {
|
|
59
|
+
epoch: string;
|
|
60
|
+
resync: true;
|
|
61
|
+
};
|
|
62
|
+
export interface EventManager {
|
|
63
|
+
/** This process's epoch. */
|
|
64
|
+
readonly epoch: string;
|
|
65
|
+
/** Stamp + buffer an event, returning the stamped form for broadcast. */
|
|
66
|
+
emit(event: ProviderNodeChangeEvent): StampedEvent;
|
|
67
|
+
/** Replay events with `seq > cursor.seq` for the same epoch, or signal resync. */
|
|
68
|
+
since(cursor: EventCursor): SinceResult;
|
|
69
|
+
/** Latest cursor: epoch + highest assigned seq (seq 0 if nothing emitted). */
|
|
70
|
+
current(): EventCursor;
|
|
71
|
+
}
|
|
72
|
+
export interface EventManagerOptions {
|
|
73
|
+
/** Ring-buffer capacity (default {@link DEFAULT_EVENT_BUFFER_SIZE}). */
|
|
74
|
+
bufferSize?: number;
|
|
75
|
+
/** Override the epoch (for tests / determinism). Defaults to a random UUID. */
|
|
76
|
+
epoch?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create an in-memory event manager.
|
|
80
|
+
*/
|
|
81
|
+
export declare function createEventManager(options?: EventManagerOptions): EventManager;
|
|
82
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/daemon/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,KAAK,EAAE,uBAAuB,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,YAAY,EAAE,CAAA;CAAE,GACzD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,IAAI,CAAA;CAAE,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,IAAI,CAAC,KAAK,EAAE,uBAAuB,GAAG,YAAY,CAAC;IACnD,kFAAkF;IAClF,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IACxC,8EAA8E;IAC9E,OAAO,IAAI,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAoDlF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Manager
|
|
3
|
+
*
|
|
4
|
+
* Durable, replayable in-memory event stream for the daemon's watch channel.
|
|
5
|
+
* Each emitted change event gets a monotonic `seq` within a per-process
|
|
6
|
+
* `epoch`; the last N are retained in a ring buffer so a reconnecting subscriber
|
|
7
|
+
* can replay what it missed via `since(cursor)`.
|
|
8
|
+
*
|
|
9
|
+
* Scope (P3 M2): single process, in-memory. It survives client disconnects
|
|
10
|
+
* within the buffer window, NOT daemon restarts — a restart starts a fresh
|
|
11
|
+
* epoch, so any cursor from a prior epoch resolves to `resync` and the client
|
|
12
|
+
* does a full re-query. A durable on-disk log is intentionally deferred; the
|
|
13
|
+
* ring buffer covers the reconnect-gap case that matters for agents.
|
|
14
|
+
*/
|
|
15
|
+
import { randomUUID } from 'node:crypto';
|
|
16
|
+
/** Default ring-buffer capacity (number of events retained for replay). */
|
|
17
|
+
export const DEFAULT_EVENT_BUFFER_SIZE = 1024;
|
|
18
|
+
/**
|
|
19
|
+
* Create an in-memory event manager.
|
|
20
|
+
*/
|
|
21
|
+
export function createEventManager(options = {}) {
|
|
22
|
+
const bufferSize = Math.max(1, options.bufferSize ?? DEFAULT_EVENT_BUFFER_SIZE);
|
|
23
|
+
const epoch = options.epoch ?? randomUUID();
|
|
24
|
+
const buffer = []; // ascending by seq
|
|
25
|
+
let latestSeq = 0;
|
|
26
|
+
return {
|
|
27
|
+
epoch,
|
|
28
|
+
emit(event) {
|
|
29
|
+
latestSeq += 1;
|
|
30
|
+
const stamped = {
|
|
31
|
+
seq: latestSeq,
|
|
32
|
+
epoch,
|
|
33
|
+
emittedAt: new Date().toISOString(),
|
|
34
|
+
event,
|
|
35
|
+
};
|
|
36
|
+
buffer.push(stamped);
|
|
37
|
+
if (buffer.length > bufferSize)
|
|
38
|
+
buffer.shift();
|
|
39
|
+
return stamped;
|
|
40
|
+
},
|
|
41
|
+
since(cursor) {
|
|
42
|
+
// A malformed seq (NaN, Infinity, negative, non-integer) can't be served
|
|
43
|
+
// as a delta — NaN comparisons would otherwise slip through as an empty
|
|
44
|
+
// "you're caught up" result. Force a resync so the caller re-queries.
|
|
45
|
+
if (!Number.isInteger(cursor.seq) || cursor.seq < 0) {
|
|
46
|
+
return { epoch, resync: true };
|
|
47
|
+
}
|
|
48
|
+
// Different epoch → seq space reset under the client; full resync.
|
|
49
|
+
if (cursor.epoch !== epoch) {
|
|
50
|
+
return { epoch, resync: true };
|
|
51
|
+
}
|
|
52
|
+
// Caller is at or ahead of the head → nothing to replay.
|
|
53
|
+
if (cursor.seq >= latestSeq) {
|
|
54
|
+
return { epoch, events: [] };
|
|
55
|
+
}
|
|
56
|
+
// The oldest seq we can still serve. If the event right after the cursor
|
|
57
|
+
// (cursor.seq + 1) was already evicted, we can't guarantee a complete
|
|
58
|
+
// delta → resync.
|
|
59
|
+
const oldestBuffered = buffer.length > 0 ? buffer[0].seq : latestSeq + 1;
|
|
60
|
+
if (cursor.seq + 1 < oldestBuffered) {
|
|
61
|
+
return { epoch, resync: true };
|
|
62
|
+
}
|
|
63
|
+
const events = buffer.filter((e) => e.seq > cursor.seq);
|
|
64
|
+
return { epoch, events };
|
|
65
|
+
},
|
|
66
|
+
current() {
|
|
67
|
+
return { epoch, seq: latestSeq };
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/daemon/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AA+D9C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAA+B,EAAE;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,yBAAyB,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAmB,EAAE,CAAC,CAAC,mBAAmB;IACtD,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,OAAO;QACL,KAAK;QAEL,IAAI,CAAC,KAA8B;YACjC,SAAS,IAAI,CAAC,CAAC;YACf,MAAM,OAAO,GAAiB;gBAC5B,GAAG,EAAE,SAAS;gBACd,KAAK;gBACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,KAAK;aACN,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,MAAmB;YACvB,yEAAyE;YACzE,wEAAwE;YACxE,sEAAsE;YACtE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;gBACpD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjC,CAAC;YACD,mEAAmE;YACnE,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjC,CAAC;YACD,yDAAyD;YACzD,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC/B,CAAC;YACD,yEAAyE;YACzE,sEAAsE;YACtE,kBAAkB;YAClB,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;YACzE,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,cAAc,EAAE,CAAC;gBACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjC,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACxD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flush.d.ts","sourceRoot":"","sources":["../../src/daemon/flush.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"flush.d.ts","sourceRoot":"","sources":["../../src/daemon/flush.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,iCAAiC;IACjC,QAAQ,IAAI,IAAI,CAAC;IAEjB,4BAA4B;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,qDAAqD;IACrD,KAAK,IAAI,IAAI,CAAC;IAEd,sBAAsB;IACtB,MAAM,IAAI,IAAI,CAAC;IAEf,oDAAoD;IACpD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,yCAAyC;IACzC,iBAAiB,IAAI,OAAO,CAAC;IAE7B,iCAAiC;IACjC,aAAa,IAAI,MAAM,EAAE,CAAC;IAE1B,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAMD,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,kBAAkB,CAG7D,CAAC;AAMF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,cAAc,GACtB,kBAAkB,CA0FpB"}
|
package/dist/daemon/flush.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Coordinates debounced flushing from SQLite to JSONL with
|
|
5
5
|
* file watcher integration for handling external changes.
|
|
6
6
|
*/
|
|
7
|
-
import { createDebouncedFlusher
|
|
7
|
+
import { createDebouncedFlusher } from '../graph/debounce.js';
|
|
8
8
|
// ============================================================================
|
|
9
9
|
// Default Configuration
|
|
10
10
|
// ============================================================================
|
|
@@ -55,7 +55,17 @@ export function createDaemonFlushManager(config, onFlush) {
|
|
|
55
55
|
async flush() {
|
|
56
56
|
if (isPaused)
|
|
57
57
|
return;
|
|
58
|
-
|
|
58
|
+
// Drain fully. A single flusher.flush() may coalesce onto an in-flight
|
|
59
|
+
// flush whose batch was snapshotted (doFlush copies + clears dirtyNodes)
|
|
60
|
+
// BEFORE a just-marked node — e.g. a durable claim/terminal write that
|
|
61
|
+
// calls markDirty() then flush() while a debounced flush is mid-write.
|
|
62
|
+
// Awaiting only that in-flight promise would resolve with the durable
|
|
63
|
+
// node still dirty (in SQLite, not JSONL), breaking the "on disk before
|
|
64
|
+
// the RPC returns" guarantee. Loop until the dirty set is empty — or a
|
|
65
|
+
// concurrent pause (git sync) defers the remainder to resume().
|
|
66
|
+
do {
|
|
67
|
+
await flusher.flush();
|
|
68
|
+
} while (!isPaused && dirtyNodes.size > 0);
|
|
59
69
|
},
|
|
60
70
|
pause() {
|
|
61
71
|
isPaused = true;
|
package/dist/daemon/flush.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flush.js","sourceRoot":"","sources":["../../src/daemon/flush.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"flush.js","sourceRoot":"","sources":["../../src/daemon/flush.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,sBAAsB,EAAyB,MAAM,sBAAsB,CAAC;AAsDrF,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAiC;IAChE,UAAU,EAAE,IAAI,EAAE,YAAY;IAC9B,UAAU,EAAE,KAAK,EAAE,aAAa;CACjC,CAAC;AAEF,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAA0B,EAC1B,OAAuB;IAEvB,MAAM,EACJ,UAAU,GAAG,oBAAoB,CAAC,UAAU,EAC5C,UAAU,GAAG,oBAAoB,CAAC,UAAU,GAC7C,GAAG,MAAM,CAAC;IAEX,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB;;OAEG;IACH,KAAK,UAAU,OAAO;QACpB,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,0CAA0C;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,UAAU,CAAC,KAAK,EAAE,CAAC;QAEnB,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,sCAAsC;IACtC,MAAM,OAAO,GAAqB,sBAAsB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;IAE9F,OAAO;QACL,IAAI,MAAM;YACR,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,SAAS,CAAC,MAAc;YACtB,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC;QAED,QAAQ;YACN,IAAI,QAAQ;gBAAE,OAAO;YACrB,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,KAAK;YACT,IAAI,QAAQ;gBAAE,OAAO;YACrB,uEAAuE;YACvE,yEAAyE;YACzE,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,wEAAwE;YACxE,uEAAuE;YACvE,gEAAgE;YAChE,GAAG,CAAC;gBACF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC,QAAQ,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE;QAC7C,CAAC;QAED,KAAK;YACH,QAAQ,GAAG,IAAI,CAAC;YAChB,qCAAqC;YACrC,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,iEAAiE;QACnE,CAAC;QAED,MAAM;YACJ,QAAQ,GAAG,KAAK,CAAC;YACjB,yDAAyD;YACzD,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,UAAU;YACd,kCAAkC;YAClC,qCAAqC;YACrC,OAAO,CAAC,MAAM,EAAE,CAAC;YAEjB,kCAAkC;YAClC,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAED,iBAAiB;YACf,OAAO,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACrD,CAAC;QAED,aAAa;YACX,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon Health Counters (P3 M3 / F10)
|
|
3
|
+
*
|
|
4
|
+
* Tracks failures the daemon would otherwise swallow silently — file-watcher
|
|
5
|
+
* diff errors and provider-reconcile errors — plus liveness timestamps, so an
|
|
6
|
+
* operator can answer "is the watcher / reconcile loop actually healthy?" via
|
|
7
|
+
* the `health` method instead of grepping stderr. Git sync failures are tracked
|
|
8
|
+
* separately by the syncer's SyncerHealth and surfaced alongside these.
|
|
9
|
+
*/
|
|
10
|
+
export interface DaemonHealthSnapshot {
|
|
11
|
+
/** Count of file-watcher diff errors swallowed since start. */
|
|
12
|
+
watcherErrors: number;
|
|
13
|
+
/** ISO timestamp of the most recent watcher error, or null. */
|
|
14
|
+
lastWatcherErrorAt: string | null;
|
|
15
|
+
/** Count of provider-reconcile runs that completed cleanly. */
|
|
16
|
+
reconcileRuns: number;
|
|
17
|
+
/** Count of provider-reconcile runs that threw. */
|
|
18
|
+
reconcileErrors: number;
|
|
19
|
+
/** ISO timestamp of the last completed reconcile (success or failure). */
|
|
20
|
+
lastReconcileAt: string | null;
|
|
21
|
+
/** ISO timestamp of the most recent reconcile error, or null. */
|
|
22
|
+
lastReconcileErrorAt: string | null;
|
|
23
|
+
}
|
|
24
|
+
export interface HealthCounters {
|
|
25
|
+
/** A file-watcher diff threw and was swallowed. */
|
|
26
|
+
recordWatcherError(): void;
|
|
27
|
+
/** A provider reconcile completed cleanly. */
|
|
28
|
+
recordReconcileRun(): void;
|
|
29
|
+
/** A provider reconcile threw. */
|
|
30
|
+
recordReconcileError(): void;
|
|
31
|
+
/** Immutable snapshot for the `health` response. */
|
|
32
|
+
snapshot(): DaemonHealthSnapshot;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a daemon health-counters tracker.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createHealthCounters(): HealthCounters;
|
|
38
|
+
//# sourceMappingURL=health-counters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-counters.d.ts","sourceRoot":"","sources":["../../src/daemon/health-counters.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iEAAiE;IACjE,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,kBAAkB,IAAI,IAAI,CAAC;IAC3B,8CAA8C;IAC9C,kBAAkB,IAAI,IAAI,CAAC;IAC3B,kCAAkC;IAClC,oBAAoB,IAAI,IAAI,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,IAAI,oBAAoB,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CA6BrD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon Health Counters (P3 M3 / F10)
|
|
3
|
+
*
|
|
4
|
+
* Tracks failures the daemon would otherwise swallow silently — file-watcher
|
|
5
|
+
* diff errors and provider-reconcile errors — plus liveness timestamps, so an
|
|
6
|
+
* operator can answer "is the watcher / reconcile loop actually healthy?" via
|
|
7
|
+
* the `health` method instead of grepping stderr. Git sync failures are tracked
|
|
8
|
+
* separately by the syncer's SyncerHealth and surfaced alongside these.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Create a daemon health-counters tracker.
|
|
12
|
+
*/
|
|
13
|
+
export function createHealthCounters() {
|
|
14
|
+
const s = {
|
|
15
|
+
watcherErrors: 0,
|
|
16
|
+
lastWatcherErrorAt: null,
|
|
17
|
+
reconcileRuns: 0,
|
|
18
|
+
reconcileErrors: 0,
|
|
19
|
+
lastReconcileAt: null,
|
|
20
|
+
lastReconcileErrorAt: null,
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
recordWatcherError() {
|
|
24
|
+
s.watcherErrors += 1;
|
|
25
|
+
s.lastWatcherErrorAt = new Date().toISOString();
|
|
26
|
+
},
|
|
27
|
+
recordReconcileRun() {
|
|
28
|
+
s.reconcileRuns += 1;
|
|
29
|
+
s.lastReconcileAt = new Date().toISOString();
|
|
30
|
+
},
|
|
31
|
+
recordReconcileError() {
|
|
32
|
+
s.reconcileErrors += 1;
|
|
33
|
+
const now = new Date().toISOString();
|
|
34
|
+
s.lastReconcileAt = now;
|
|
35
|
+
s.lastReconcileErrorAt = now;
|
|
36
|
+
},
|
|
37
|
+
snapshot() {
|
|
38
|
+
return { ...s };
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=health-counters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-counters.js","sourceRoot":"","sources":["../../src/daemon/health-counters.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4BH;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,CAAC,GAAyB;QAC9B,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,CAAC;QAChB,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,IAAI;QACrB,oBAAoB,EAAE,IAAI;KAC3B,CAAC;IAEF,OAAO;QACL,kBAAkB;YAChB,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,kBAAkB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAClD,CAAC;QACD,kBAAkB;YAChB,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,CAAC;QACD,oBAAoB;YAClB,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC;YACxB,CAAC,CAAC,oBAAoB,GAAG,GAAG,CAAC;QAC/B,CAAC;QACD,QAAQ;YACN,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Idempotency Store (P3 M3, F9)
|
|
3
|
+
*
|
|
4
|
+
* In-memory map from a client-supplied idempotency key to the node id created
|
|
5
|
+
* for it, with a TTL window. A create retried with the same key inside the
|
|
6
|
+
* window returns the original node instead of creating a duplicate — the common
|
|
7
|
+
* "agent retried after a timeout / dropped ack" case.
|
|
8
|
+
*
|
|
9
|
+
* `run()` dedupes both SEQUENTIAL retries (via the TTL map) and CONCURRENT
|
|
10
|
+
* in-flight retries (via a reservation): two requests carrying the same key that
|
|
11
|
+
* arrive before either completes share a single create, so the get→create gap
|
|
12
|
+
* can't produce duplicates.
|
|
13
|
+
*
|
|
14
|
+
* Per-process and best-effort: it does not survive a daemon restart, and it
|
|
15
|
+
* dedupes creates only (not arbitrary mutations). Bounded in size so a flood of
|
|
16
|
+
* unique keys can't grow it without limit.
|
|
17
|
+
*/
|
|
18
|
+
export interface IdempotencyStore {
|
|
19
|
+
/** The node id previously created for `key`, or undefined if none / expired. */
|
|
20
|
+
get(key: string): string | undefined;
|
|
21
|
+
/** Record that `key` produced `nodeId`. */
|
|
22
|
+
set(key: string, nodeId: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Run `create` at most once per `key`, across both sequential retries (within
|
|
25
|
+
* the TTL window) and concurrent in-flight requests:
|
|
26
|
+
* - completed mapping present + node still exists → re-fetch and return it;
|
|
27
|
+
* - another create with this key in flight → await it and return its node;
|
|
28
|
+
* - otherwise → reserve the key synchronously (closing the get→create gap),
|
|
29
|
+
* create, record the mapping, and return the new node.
|
|
30
|
+
* If a recorded node was deleted since, or a concurrent creator failed, the
|
|
31
|
+
* caller recreates. `fetch` returns the current node for an id (or null/undefined
|
|
32
|
+
* if gone).
|
|
33
|
+
*/
|
|
34
|
+
run<T extends {
|
|
35
|
+
id: string;
|
|
36
|
+
}>(key: string, create: () => Promise<T>, fetch: (id: string) => Promise<T | null | undefined>): Promise<T>;
|
|
37
|
+
}
|
|
38
|
+
export interface IdempotencyStoreOptions {
|
|
39
|
+
/** How long a key maps to its node id (default 10 minutes). */
|
|
40
|
+
ttlMs?: number;
|
|
41
|
+
/** Max retained keys; the oldest are evicted past this (default 10_000). */
|
|
42
|
+
max?: number;
|
|
43
|
+
}
|
|
44
|
+
export declare const DEFAULT_IDEMPOTENCY_TTL_MS: number;
|
|
45
|
+
export declare const DEFAULT_IDEMPOTENCY_MAX = 10000;
|
|
46
|
+
/**
|
|
47
|
+
* Create an in-memory idempotency store.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createIdempotencyStore(options?: IdempotencyStoreOptions): IdempotencyStore;
|
|
50
|
+
//# sourceMappingURL=idempotency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../../src/daemon/idempotency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,2CAA2C;IAC3C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC;;;;;;;;;;OAUG;IACH,GAAG,CAAC,CAAC,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAC1B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GACnD,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,0BAA0B,QAAiB,CAAC;AACzD,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,CAoFlB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Idempotency Store (P3 M3, F9)
|
|
3
|
+
*
|
|
4
|
+
* In-memory map from a client-supplied idempotency key to the node id created
|
|
5
|
+
* for it, with a TTL window. A create retried with the same key inside the
|
|
6
|
+
* window returns the original node instead of creating a duplicate — the common
|
|
7
|
+
* "agent retried after a timeout / dropped ack" case.
|
|
8
|
+
*
|
|
9
|
+
* `run()` dedupes both SEQUENTIAL retries (via the TTL map) and CONCURRENT
|
|
10
|
+
* in-flight retries (via a reservation): two requests carrying the same key that
|
|
11
|
+
* arrive before either completes share a single create, so the get→create gap
|
|
12
|
+
* can't produce duplicates.
|
|
13
|
+
*
|
|
14
|
+
* Per-process and best-effort: it does not survive a daemon restart, and it
|
|
15
|
+
* dedupes creates only (not arbitrary mutations). Bounded in size so a flood of
|
|
16
|
+
* unique keys can't grow it without limit.
|
|
17
|
+
*/
|
|
18
|
+
export const DEFAULT_IDEMPOTENCY_TTL_MS = 10 * 60 * 1000;
|
|
19
|
+
export const DEFAULT_IDEMPOTENCY_MAX = 10_000;
|
|
20
|
+
/**
|
|
21
|
+
* Create an in-memory idempotency store.
|
|
22
|
+
*/
|
|
23
|
+
export function createIdempotencyStore(options = {}) {
|
|
24
|
+
const ttlMs = options.ttlMs ?? DEFAULT_IDEMPOTENCY_TTL_MS;
|
|
25
|
+
const max = Math.max(1, options.max ?? DEFAULT_IDEMPOTENCY_MAX);
|
|
26
|
+
// Insertion-ordered (Map preserves it); value carries expiry for lazy TTL.
|
|
27
|
+
const entries = new Map();
|
|
28
|
+
// In-flight reservations: key → promise resolving to the created node id (or
|
|
29
|
+
// null if that creator failed). Lets concurrent callers share one create.
|
|
30
|
+
const inflight = new Map();
|
|
31
|
+
const store = {
|
|
32
|
+
get(key) {
|
|
33
|
+
const hit = entries.get(key);
|
|
34
|
+
if (!hit)
|
|
35
|
+
return undefined;
|
|
36
|
+
if (hit.expiresAt <= Date.now()) {
|
|
37
|
+
entries.delete(key);
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
return hit.nodeId;
|
|
41
|
+
},
|
|
42
|
+
set(key, nodeId) {
|
|
43
|
+
// Re-insert so recency order reflects this write (oldest-evicted-first).
|
|
44
|
+
entries.delete(key);
|
|
45
|
+
entries.set(key, { nodeId, expiresAt: Date.now() + ttlMs });
|
|
46
|
+
// Bound memory: drop oldest entries until under the cap.
|
|
47
|
+
while (entries.size > max) {
|
|
48
|
+
const oldest = entries.keys().next().value;
|
|
49
|
+
if (oldest === undefined)
|
|
50
|
+
break;
|
|
51
|
+
entries.delete(oldest);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
async run(key, create, fetch) {
|
|
55
|
+
// Sequential-retry fast path: a completed mapping within the TTL window.
|
|
56
|
+
const doneId = store.get(key);
|
|
57
|
+
if (doneId !== undefined) {
|
|
58
|
+
const existing = await fetch(doneId);
|
|
59
|
+
if (existing)
|
|
60
|
+
return existing;
|
|
61
|
+
// Stale mapping (node deleted since) — fall through to recreate.
|
|
62
|
+
}
|
|
63
|
+
// Concurrent + recreate loop. Each iteration either joins an in-flight
|
|
64
|
+
// create or becomes the owner. The owner reserves SYNCHRONOUSLY (no await
|
|
65
|
+
// between the inflight check and the set), so a concurrent caller can't
|
|
66
|
+
// also become an owner — closing the get→create TOCTOU.
|
|
67
|
+
for (;;) {
|
|
68
|
+
const pending = inflight.get(key);
|
|
69
|
+
if (pending) {
|
|
70
|
+
const id = await pending;
|
|
71
|
+
if (id) {
|
|
72
|
+
const existing = await fetch(id);
|
|
73
|
+
if (existing)
|
|
74
|
+
return existing;
|
|
75
|
+
}
|
|
76
|
+
// The owner failed, or its node is already gone — re-check: someone
|
|
77
|
+
// else may now own the key, otherwise we become the owner.
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
let settle;
|
|
81
|
+
const reservation = new Promise((resolve) => {
|
|
82
|
+
settle = resolve;
|
|
83
|
+
});
|
|
84
|
+
inflight.set(key, reservation);
|
|
85
|
+
try {
|
|
86
|
+
const node = await create();
|
|
87
|
+
store.set(key, node.id);
|
|
88
|
+
settle(node.id);
|
|
89
|
+
return node;
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
// Release the reservation so a retry can proceed, then propagate.
|
|
93
|
+
settle(null);
|
|
94
|
+
throw err;
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
inflight.delete(key);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
return store;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=idempotency.js.map
|