@lumenflow/packs-sidekick 4.24.0 → 5.0.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/dist/channel-ingress.d.ts +46 -0
- package/dist/channel-ingress.d.ts.map +1 -0
- package/dist/channel-ingress.js +90 -0
- package/dist/channel-ingress.js.map +1 -0
- package/dist/manifest.d.ts +17 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +67 -0
- package/dist/manifest.js.map +1 -1
- package/dist/sidekick-events.d.ts +166 -0
- package/dist/sidekick-events.d.ts.map +1 -0
- package/dist/sidekick-events.js +288 -0
- package/dist/sidekick-events.js.map +1 -0
- package/dist/src/adapters/cloud-queue.d.ts +20 -0
- package/dist/src/adapters/cloud-queue.d.ts.map +1 -0
- package/dist/src/adapters/cloud-queue.js +90 -0
- package/dist/src/adapters/cloud-queue.js.map +1 -0
- package/dist/src/adapters/control-plane-bridge.adapter.d.ts +31 -0
- package/dist/src/adapters/control-plane-bridge.adapter.d.ts.map +1 -0
- package/dist/src/adapters/control-plane-bridge.adapter.js +263 -0
- package/dist/src/adapters/control-plane-bridge.adapter.js.map +1 -0
- package/dist/src/adapters/filesystem-bridge.adapter.d.ts +11 -0
- package/dist/src/adapters/filesystem-bridge.adapter.d.ts.map +1 -0
- package/dist/src/adapters/filesystem-bridge.adapter.js +161 -0
- package/dist/src/adapters/filesystem-bridge.adapter.js.map +1 -0
- package/dist/src/channel-ingress.d.ts +46 -0
- package/dist/src/channel-ingress.d.ts.map +1 -0
- package/dist/src/channel-ingress.js +90 -0
- package/dist/src/channel-ingress.js.map +1 -0
- package/dist/src/domain/channel.types.d.ts +79 -0
- package/dist/src/domain/channel.types.d.ts.map +1 -0
- package/dist/src/domain/channel.types.js +4 -0
- package/dist/src/domain/channel.types.js.map +1 -0
- package/dist/src/ports/channel-bridge.port.d.ts +49 -0
- package/dist/src/ports/channel-bridge.port.d.ts.map +1 -0
- package/dist/src/ports/channel-bridge.port.js +18 -0
- package/dist/src/ports/channel-bridge.port.js.map +1 -0
- package/dist/src/routines/commit.d.ts +21 -0
- package/dist/src/routines/commit.d.ts.map +1 -0
- package/dist/src/routines/commit.js +42 -0
- package/dist/src/routines/commit.js.map +1 -0
- package/dist/src/sidekick-events.d.ts +166 -0
- package/dist/src/sidekick-events.d.ts.map +1 -0
- package/dist/src/sidekick-events.js +288 -0
- package/dist/src/sidekick-events.js.map +1 -0
- package/dist/tool-impl/channel-tools.d.ts.map +1 -1
- package/dist/tool-impl/channel-tools.js +24 -0
- package/dist/tool-impl/channel-tools.js.map +1 -1
- package/dist/tool-impl/memory-tools.d.ts.map +1 -1
- package/dist/tool-impl/memory-tools.js +7 -0
- package/dist/tool-impl/memory-tools.js.map +1 -1
- package/dist/tool-impl/routine-commit.d.ts +3 -0
- package/dist/tool-impl/routine-commit.d.ts.map +1 -0
- package/dist/tool-impl/routine-commit.js +69 -0
- package/dist/tool-impl/routine-commit.js.map +1 -0
- package/dist/tool-impl/routine-tools.d.ts.map +1 -1
- package/dist/tool-impl/routine-tools.js +50 -7
- package/dist/tool-impl/routine-tools.js.map +1 -1
- package/dist/tool-impl/runtime-context.d.ts +4 -0
- package/dist/tool-impl/runtime-context.d.ts.map +1 -1
- package/dist/tool-impl/runtime-context.js.map +1 -1
- package/dist/tool-impl/storage.d.ts.map +1 -1
- package/dist/tool-impl/storage.js +3 -0
- package/dist/tool-impl/storage.js.map +1 -1
- package/dist/tool-impl/system-tools.d.ts.map +1 -1
- package/dist/tool-impl/system-tools.js +2 -0
- package/dist/tool-impl/system-tools.js.map +1 -1
- package/dist/tool-impl/task-tools.d.ts.map +1 -1
- package/dist/tool-impl/task-tools.js +30 -0
- package/dist/tool-impl/task-tools.js.map +1 -1
- package/manifest.yaml +88 -0
- package/package.json +4 -2
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WU-2735 (INIT-060 WU-7a, ADR-013 §ChannelBridge):
|
|
3
|
+
* Pure domain types for the ChannelBridge port.
|
|
4
|
+
*
|
|
5
|
+
* These types are pure domain: they MUST NOT reference Node `fs`, network
|
|
6
|
+
* sockets, cloud endpoints, or any adapter-specific concept. Both the
|
|
7
|
+
* filesystem adapter (this WU) and the control-plane adapter (WU-2737) shape
|
|
8
|
+
* themselves around these definitions.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Branded channel identifier. The bridge mints these during `register`; the
|
|
12
|
+
* brand prevents callers from forging ids from raw strings.
|
|
13
|
+
*/
|
|
14
|
+
export type ChannelId = string & {
|
|
15
|
+
readonly __brand: 'sidekick.ChannelId';
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Envelope dispatch classification per ADR-013 §4 backpressure split.
|
|
19
|
+
*
|
|
20
|
+
* - `ephemeral` — observational; may fail-silent when transport is down.
|
|
21
|
+
* - `queue` — commands / approvals; must be queued and replayed on reconnect.
|
|
22
|
+
*/
|
|
23
|
+
export type EnvelopeKind = 'ephemeral' | 'queue';
|
|
24
|
+
/**
|
|
25
|
+
* A channel envelope. Kept transport-agnostic: `body` is an opaque
|
|
26
|
+
* JSON-serialisable payload, `content_type` labels it so receivers can dispatch
|
|
27
|
+
* without snooping the body.
|
|
28
|
+
*/
|
|
29
|
+
export interface ChannelEnvelope {
|
|
30
|
+
/** Unique id per envelope (content-hash or uuid — chosen by the emitter). */
|
|
31
|
+
id: string;
|
|
32
|
+
/** §4 backpressure policy — drives send path (fail-silent vs queued replay). */
|
|
33
|
+
kind: EnvelopeKind;
|
|
34
|
+
/** MIME-like content descriptor, e.g. `application/json`, `text/plain`. */
|
|
35
|
+
content_type: string;
|
|
36
|
+
/** Payload. JSON-serialisable; no host-specific handles. */
|
|
37
|
+
body: unknown;
|
|
38
|
+
/** ISO-8601 UTC timestamp of emit; per-channel ordering key (ADR-013 §3). */
|
|
39
|
+
emitted_at: string;
|
|
40
|
+
/** Optional emitter-supplied metadata (trace ids, correlation keys). */
|
|
41
|
+
metadata?: Readonly<Record<string, unknown>>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Bridge registration config — identity under which a channel is opened.
|
|
45
|
+
*
|
|
46
|
+
* The (`provider`, `name`) pair is the canonical identity: re-registering the
|
|
47
|
+
* same pair returns the same `ChannelId` (ADR-013 §ChannelBridge contract
|
|
48
|
+
* rule #3 — idempotent register).
|
|
49
|
+
*
|
|
50
|
+
* `options` is provider-specific bag. The port does NOT inspect it; adapters
|
|
51
|
+
* interpret.
|
|
52
|
+
*/
|
|
53
|
+
export interface BridgeConfig {
|
|
54
|
+
/** Provider slug — e.g. `filesystem`, `control-plane`. */
|
|
55
|
+
provider: string;
|
|
56
|
+
/** Human-readable channel name scoped within the provider. */
|
|
57
|
+
name: string;
|
|
58
|
+
/** Provider-specific options (paths, tokens, etc.). Opaque to the port. */
|
|
59
|
+
options?: Readonly<Record<string, unknown>>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Result of a `send` attempt. `accepted` reflects the port contract: for
|
|
63
|
+
* ephemeral envelopes with an unreachable transport, adapters may return
|
|
64
|
+
* `{ accepted: false, reason: '...' }` rather than throwing (§4 fail-silent).
|
|
65
|
+
*/
|
|
66
|
+
export interface SendResult {
|
|
67
|
+
accepted: boolean;
|
|
68
|
+
/** Transport-assigned id when the sink confirms receipt (optional). */
|
|
69
|
+
delivery_id?: string;
|
|
70
|
+
/** Reason when `accepted === false` (not meant for programmatic handling). */
|
|
71
|
+
reason?: string;
|
|
72
|
+
/**
|
|
73
|
+
* `true` when the sink recognised `envelope.id` on a registered channel as
|
|
74
|
+
* an at-least-once replay (WU-2737 §Idempotency; cloud contract surface).
|
|
75
|
+
* Adapters that cannot observe dedup SHOULD omit this field.
|
|
76
|
+
*/
|
|
77
|
+
deduped?: boolean;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=channel.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.types.d.ts","sourceRoot":"","sources":["../../../src/domain/channel.types.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,gFAAgF;IAChF,IAAI,EAAE,YAAY,CAAC;IACnB,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,IAAI,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9C;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.types.js","sourceRoot":"","sources":["../../../src/domain/channel.types.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WU-2735 (INIT-060 WU-7a, ADR-013 §ChannelBridge):
|
|
3
|
+
* ChannelBridge port.
|
|
4
|
+
*
|
|
5
|
+
* Port contract — load-bearing across adapters (ADR-013 §ChannelBridge):
|
|
6
|
+
*
|
|
7
|
+
* - `send` is at-least-once for `queue` envelopes, fail-silent for
|
|
8
|
+
* `ephemeral` envelopes (ADR-013 §4 backpressure split).
|
|
9
|
+
* - `receive` yields envelopes in emit order on a single channel (§3). No
|
|
10
|
+
* cross-channel ordering guarantee.
|
|
11
|
+
* - `register` is idempotent on `BridgeConfig` identity — same
|
|
12
|
+
* `(provider, name)` returns the same `ChannelId`.
|
|
13
|
+
* - `disconnect` flushes queued envelopes before closing; in-flight ephemerals
|
|
14
|
+
* may drop.
|
|
15
|
+
*
|
|
16
|
+
* The port MUST NOT leak filesystem- or network-specific types. Both the
|
|
17
|
+
* filesystem adapter (this WU) and the cloud adapter (WU-2737) implement this
|
|
18
|
+
* interface unmodified.
|
|
19
|
+
*/
|
|
20
|
+
import type { BridgeConfig, ChannelEnvelope, ChannelId, SendResult } from '../domain/channel.types.js';
|
|
21
|
+
export interface ChannelBridge {
|
|
22
|
+
/**
|
|
23
|
+
* Send an envelope on a registered channel.
|
|
24
|
+
*
|
|
25
|
+
* @throws if `channelId` is not registered, or has been disconnected.
|
|
26
|
+
*/
|
|
27
|
+
send(channelId: ChannelId, envelope: ChannelEnvelope): Promise<SendResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Stream envelopes on the given channel in emit order. The iterator
|
|
30
|
+
* terminates after `disconnect(channelId)`; otherwise it is long-lived.
|
|
31
|
+
*/
|
|
32
|
+
receive(channelId: ChannelId): AsyncIterable<ChannelEnvelope>;
|
|
33
|
+
/**
|
|
34
|
+
* Register a channel and return its id. Idempotent on `(provider, name)`.
|
|
35
|
+
*/
|
|
36
|
+
register(bridgeConfig: BridgeConfig): Promise<ChannelId>;
|
|
37
|
+
/**
|
|
38
|
+
* Close the channel. Queued envelopes flush before this resolves; ephemerals
|
|
39
|
+
* in flight may be dropped.
|
|
40
|
+
*/
|
|
41
|
+
disconnect(channelId: ChannelId): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Structural type guard. Useful for adapter tests and runtime payload
|
|
45
|
+
* validation at the port boundary.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isChannelEnvelope(value: unknown): value is ChannelEnvelope;
|
|
48
|
+
export type { BridgeConfig, ChannelEnvelope, ChannelId, SendResult };
|
|
49
|
+
//# sourceMappingURL=channel-bridge.port.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-bridge.port.d.ts","sourceRoot":"","sources":["../../../src/ports/channel-bridge.port.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,UAAU,EACX,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE3E;;;OAGG;IACH,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;IAE9D;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzD;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAY1E;AAED,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Structural type guard. Useful for adapter tests and runtime payload
|
|
5
|
+
* validation at the port boundary.
|
|
6
|
+
*/
|
|
7
|
+
export function isChannelEnvelope(value) {
|
|
8
|
+
if (!value || typeof value !== 'object') {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
const v = value;
|
|
12
|
+
return (typeof v.id === 'string' &&
|
|
13
|
+
(v.kind === 'ephemeral' || v.kind === 'queue') &&
|
|
14
|
+
typeof v.content_type === 'string' &&
|
|
15
|
+
'body' in v &&
|
|
16
|
+
typeof v.emitted_at === 'string');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=channel-bridge.port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-bridge.port.js","sourceRoot":"","sources":["../../../src/ports/channel-bridge.port.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAuDzC;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;QAC9C,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ;QAClC,MAAM,IAAI,CAAC;QACX,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CACjC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { RoutineRecord } from '../../tool-impl/storage.js';
|
|
2
|
+
export interface RoutineCommitAttestation {
|
|
3
|
+
actor: string;
|
|
4
|
+
reason: string;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}
|
|
7
|
+
export interface RoutineCommitEnvelope {
|
|
8
|
+
plan_id: string;
|
|
9
|
+
routine_name: string;
|
|
10
|
+
step_count: number;
|
|
11
|
+
committed_at: string;
|
|
12
|
+
attestation: RoutineCommitAttestation;
|
|
13
|
+
}
|
|
14
|
+
export interface BuildRoutineCommitEnvelopeInput {
|
|
15
|
+
routine: RoutineRecord;
|
|
16
|
+
attestation: RoutineCommitAttestation;
|
|
17
|
+
committedAt: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function buildRoutineCommitEnvelope(input: BuildRoutineCommitEnvelopeInput): RoutineCommitEnvelope;
|
|
20
|
+
export declare function hashRoutineCommitEnvelope(envelope: RoutineCommitEnvelope): string;
|
|
21
|
+
//# sourceMappingURL=commit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../../src/routines/commit.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAKhE,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAKf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,wBAAwB,CAAC;CACvC;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,wBAAwB,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,+BAA+B,GACrC,qBAAqB,CAQvB;AAkBD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAGjF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* WU-2738 (INIT-060, ADR-013 §6 governance): plan-to-commit envelope +
|
|
5
|
+
* content-hash helpers for the governed sidekick:routine:commit_plan
|
|
6
|
+
* tool. The commit envelope is what an agent attestation carries; the
|
|
7
|
+
* content-hash is what lands on the audit trail so cloud can correlate
|
|
8
|
+
* a `sidekick:routine_committed` event with the originating envelope
|
|
9
|
+
* without the PII-bearing body ever leaving the local workspace.
|
|
10
|
+
*/
|
|
11
|
+
import { createHash } from 'node:crypto';
|
|
12
|
+
const CONTENT_HASH_ALGORITHM = 'sha256';
|
|
13
|
+
const CONTENT_HASH_ENCODING = 'hex';
|
|
14
|
+
export function buildRoutineCommitEnvelope(input) {
|
|
15
|
+
return {
|
|
16
|
+
plan_id: input.routine.id,
|
|
17
|
+
routine_name: input.routine.name,
|
|
18
|
+
step_count: input.routine.steps.length,
|
|
19
|
+
committed_at: input.committedAt,
|
|
20
|
+
attestation: { ...input.attestation },
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function canonicalize(value) {
|
|
24
|
+
if (Array.isArray(value)) {
|
|
25
|
+
return value.map((entry) => canonicalize(entry));
|
|
26
|
+
}
|
|
27
|
+
if (value && typeof value === 'object') {
|
|
28
|
+
const record = value;
|
|
29
|
+
const sortedKeys = Object.keys(record).sort();
|
|
30
|
+
const result = {};
|
|
31
|
+
for (const key of sortedKeys) {
|
|
32
|
+
result[key] = canonicalize(record[key]);
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
export function hashRoutineCommitEnvelope(envelope) {
|
|
39
|
+
const canonical = JSON.stringify(canonicalize(envelope));
|
|
40
|
+
return createHash(CONTENT_HASH_ALGORITHM).update(canonical).digest(CONTENT_HASH_ENCODING);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=commit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/routines/commit.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,sBAAsB,GAAG,QAAQ,CAAC;AACxC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AA0BpC,MAAM,UAAU,0BAA0B,CACxC,KAAsC;IAEtC,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QACzB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;QAChC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;QACtC,YAAY,EAAE,KAAK,CAAC,WAAW;QAC/B,WAAW,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAA+B;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,OAAO,UAAU,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC5F,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { type ChannelMessageRecord, type ChannelRecord, type MemoryRecord, type RoutineRecord, type SidekickStores, type TaskRecord } from '../tool-impl/storage.js';
|
|
2
|
+
declare const SCHEMA_VERSION_V2: 2;
|
|
3
|
+
export declare const SIDEKICK_CHANNEL_ID: "sidekick";
|
|
4
|
+
export declare const SIDEKICK_EVENT_KINDS: {
|
|
5
|
+
readonly TASK_CREATED: "sidekick:task_created";
|
|
6
|
+
readonly TASK_COMPLETED: "sidekick:task_completed";
|
|
7
|
+
readonly TASK_SCHEDULED: "sidekick:task_scheduled";
|
|
8
|
+
readonly TASK_SNOOZED: "sidekick:task_snoozed";
|
|
9
|
+
readonly MEMORY_STORED: "sidekick:memory_stored";
|
|
10
|
+
readonly MEMORY_RECALLED: "sidekick:memory_recalled";
|
|
11
|
+
readonly MEMORY_FORGOTTEN: "sidekick:memory_forgotten";
|
|
12
|
+
readonly CHANNEL_MESSAGE_SENT: "sidekick:channel_message_sent";
|
|
13
|
+
readonly CHANNEL_MESSAGE_RECEIVED: "sidekick:channel_message_received";
|
|
14
|
+
readonly CHANNEL_BRIDGE_CONNECTED: "sidekick:channel_bridge_connected";
|
|
15
|
+
readonly CHANNEL_BRIDGE_DISCONNECTED: "sidekick:channel_bridge_disconnected";
|
|
16
|
+
readonly ROUTINE_PLANNED: "sidekick:routine_planned";
|
|
17
|
+
readonly ROUTINE_COMMITTED: "sidekick:routine_committed";
|
|
18
|
+
readonly ROUTINE_EXECUTED: "sidekick:routine_executed";
|
|
19
|
+
readonly ROUTINE_STEP_FAILED: "sidekick:routine_step_failed";
|
|
20
|
+
readonly STATE_REHYDRATED: "sidekick:state_rehydrated";
|
|
21
|
+
};
|
|
22
|
+
export declare const SIDEKICK_EVENT_KIND_VALUES: readonly ["sidekick:task_created", "sidekick:task_completed", "sidekick:task_scheduled", "sidekick:task_snoozed", "sidekick:memory_stored", "sidekick:memory_recalled", "sidekick:memory_forgotten", "sidekick:channel_message_sent", "sidekick:channel_message_received", "sidekick:channel_bridge_connected", "sidekick:channel_bridge_disconnected", "sidekick:routine_planned", "sidekick:routine_committed", "sidekick:routine_executed", "sidekick:routine_step_failed", "sidekick:state_rehydrated"];
|
|
23
|
+
export type SidekickEventKind = (typeof SIDEKICK_EVENT_KIND_VALUES)[number];
|
|
24
|
+
export type SidekickBackpressurePolicy = 'queue-with-replay' | 'ephemeral';
|
|
25
|
+
export declare const SIDEKICK_EVENT_BACKPRESSURE_POLICY: Record<SidekickEventKind, SidekickBackpressurePolicy>;
|
|
26
|
+
interface SidekickEventEnvelope {
|
|
27
|
+
schema_version: typeof SCHEMA_VERSION_V2;
|
|
28
|
+
timestamp: string;
|
|
29
|
+
event_id: string;
|
|
30
|
+
channel_id: typeof SIDEKICK_CHANNEL_ID;
|
|
31
|
+
seq: number;
|
|
32
|
+
}
|
|
33
|
+
export interface TaskCreatedEvent extends SidekickEventEnvelope {
|
|
34
|
+
kind: typeof SIDEKICK_EVENT_KINDS.TASK_CREATED;
|
|
35
|
+
task: TaskRecord;
|
|
36
|
+
}
|
|
37
|
+
export interface TaskCompletedEvent extends SidekickEventEnvelope {
|
|
38
|
+
kind: typeof SIDEKICK_EVENT_KINDS.TASK_COMPLETED;
|
|
39
|
+
task: TaskRecord;
|
|
40
|
+
}
|
|
41
|
+
export interface TaskScheduledEvent extends SidekickEventEnvelope {
|
|
42
|
+
kind: typeof SIDEKICK_EVENT_KINDS.TASK_SCHEDULED;
|
|
43
|
+
task: TaskRecord;
|
|
44
|
+
}
|
|
45
|
+
export interface TaskSnoozedEvent extends SidekickEventEnvelope {
|
|
46
|
+
kind: typeof SIDEKICK_EVENT_KINDS.TASK_SNOOZED;
|
|
47
|
+
task_id: string;
|
|
48
|
+
previous_due_at: string | null;
|
|
49
|
+
due_at: string;
|
|
50
|
+
}
|
|
51
|
+
export interface MemoryStoredEvent extends SidekickEventEnvelope {
|
|
52
|
+
kind: typeof SIDEKICK_EVENT_KINDS.MEMORY_STORED;
|
|
53
|
+
memory: MemoryRecord;
|
|
54
|
+
}
|
|
55
|
+
export interface MemoryRecalledEvent extends SidekickEventEnvelope {
|
|
56
|
+
kind: typeof SIDEKICK_EVENT_KINDS.MEMORY_RECALLED;
|
|
57
|
+
query: string | null;
|
|
58
|
+
count: number;
|
|
59
|
+
memory_ids: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface MemoryForgottenEvent extends SidekickEventEnvelope {
|
|
62
|
+
kind: typeof SIDEKICK_EVENT_KINDS.MEMORY_FORGOTTEN;
|
|
63
|
+
memory_id: string;
|
|
64
|
+
}
|
|
65
|
+
export interface ChannelMessageSentEvent extends SidekickEventEnvelope {
|
|
66
|
+
kind: typeof SIDEKICK_EVENT_KINDS.CHANNEL_MESSAGE_SENT;
|
|
67
|
+
message: Record<string, unknown>;
|
|
68
|
+
}
|
|
69
|
+
export interface ChannelMessageReceivedEvent extends SidekickEventEnvelope {
|
|
70
|
+
kind: typeof SIDEKICK_EVENT_KINDS.CHANNEL_MESSAGE_RECEIVED;
|
|
71
|
+
channel: string;
|
|
72
|
+
count: number;
|
|
73
|
+
provider?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface ChannelBridgeConnectedEvent extends SidekickEventEnvelope {
|
|
76
|
+
kind: typeof SIDEKICK_EVENT_KINDS.CHANNEL_BRIDGE_CONNECTED;
|
|
77
|
+
channel: ChannelRecord;
|
|
78
|
+
}
|
|
79
|
+
export interface ChannelBridgeDisconnectedEvent extends SidekickEventEnvelope {
|
|
80
|
+
kind: typeof SIDEKICK_EVENT_KINDS.CHANNEL_BRIDGE_DISCONNECTED;
|
|
81
|
+
bridge_id: string;
|
|
82
|
+
deleted_message_count: number;
|
|
83
|
+
}
|
|
84
|
+
export interface RoutinePlannedEvent extends SidekickEventEnvelope {
|
|
85
|
+
kind: typeof SIDEKICK_EVENT_KINDS.ROUTINE_PLANNED;
|
|
86
|
+
routine: RoutineRecord;
|
|
87
|
+
}
|
|
88
|
+
export interface RoutineCommittedEvent extends SidekickEventEnvelope {
|
|
89
|
+
kind: typeof SIDEKICK_EVENT_KINDS.ROUTINE_COMMITTED;
|
|
90
|
+
routine: RoutineRecord;
|
|
91
|
+
/**
|
|
92
|
+
* WU-2738 (INIT-060, ADR-013 §6 governance): content-hash of the commit
|
|
93
|
+
* envelope carried when the event is emitted by the governed
|
|
94
|
+
* `sidekick:routine:commit_plan` tool. PII stays inside the local
|
|
95
|
+
* envelope; cloud correlates on the hash. Optional so the existing
|
|
96
|
+
* update-triggered emission (routine:update) stays PII-free.
|
|
97
|
+
*/
|
|
98
|
+
envelope_content_hash?: string;
|
|
99
|
+
}
|
|
100
|
+
export interface RoutineExecutedEvent extends SidekickEventEnvelope {
|
|
101
|
+
kind: typeof SIDEKICK_EVENT_KINDS.ROUTINE_EXECUTED;
|
|
102
|
+
routine_id: string;
|
|
103
|
+
name: string;
|
|
104
|
+
step_count: number;
|
|
105
|
+
plan_only: true;
|
|
106
|
+
}
|
|
107
|
+
export interface RoutineStepFailedEvent extends SidekickEventEnvelope {
|
|
108
|
+
kind: typeof SIDEKICK_EVENT_KINDS.ROUTINE_STEP_FAILED;
|
|
109
|
+
step_index: number;
|
|
110
|
+
reason: string;
|
|
111
|
+
routine_id?: string;
|
|
112
|
+
routine_name?: string;
|
|
113
|
+
}
|
|
114
|
+
export interface StateRehydratedEvent extends SidekickEventEnvelope {
|
|
115
|
+
kind: typeof SIDEKICK_EVENT_KINDS.STATE_REHYDRATED;
|
|
116
|
+
snapshot: SidekickStores;
|
|
117
|
+
}
|
|
118
|
+
export type SidekickEvent = TaskCreatedEvent | TaskCompletedEvent | TaskScheduledEvent | TaskSnoozedEvent | MemoryStoredEvent | MemoryRecalledEvent | MemoryForgottenEvent | ChannelMessageSentEvent | ChannelMessageReceivedEvent | ChannelBridgeConnectedEvent | ChannelBridgeDisconnectedEvent | RoutinePlannedEvent | RoutineCommittedEvent | RoutineExecutedEvent | RoutineStepFailedEvent | StateRehydratedEvent;
|
|
119
|
+
export declare function resetSidekickSeqCounter(): void;
|
|
120
|
+
export declare function readSidekickOrgId(config: unknown): string | undefined;
|
|
121
|
+
export declare function emitSidekickEvent<TEvent extends SidekickEvent>(event: TEvent): Promise<TEvent>;
|
|
122
|
+
export declare function snapshotSidekickState(): Promise<SidekickStores>;
|
|
123
|
+
export declare function buildTaskCreatedEvent(task: TaskRecord): TaskCreatedEvent;
|
|
124
|
+
export declare function buildTaskCompletedEvent(task: TaskRecord): TaskCompletedEvent;
|
|
125
|
+
export declare function buildTaskScheduledEvent(task: TaskRecord): TaskScheduledEvent;
|
|
126
|
+
export declare function buildTaskSnoozedEvent(input: {
|
|
127
|
+
task_id: string;
|
|
128
|
+
previous_due_at: string | null;
|
|
129
|
+
due_at: string;
|
|
130
|
+
}): TaskSnoozedEvent;
|
|
131
|
+
export declare function buildMemoryStoredEvent(memory: MemoryRecord): MemoryStoredEvent;
|
|
132
|
+
export declare function buildMemoryRecalledEvent(input: {
|
|
133
|
+
query: string | null;
|
|
134
|
+
memories: MemoryRecord[];
|
|
135
|
+
}): MemoryRecalledEvent;
|
|
136
|
+
export declare function buildMemoryForgottenEvent(memory_id: string): MemoryForgottenEvent;
|
|
137
|
+
export declare function buildChannelMessageSentEvent(message: Record<string, unknown>): ChannelMessageSentEvent;
|
|
138
|
+
export declare function buildChannelMessageReceivedEvent(input: {
|
|
139
|
+
channel: string;
|
|
140
|
+
count: number;
|
|
141
|
+
provider?: string;
|
|
142
|
+
}): ChannelMessageReceivedEvent;
|
|
143
|
+
export declare function buildChannelBridgeConnectedEvent(channel: ChannelRecord): ChannelBridgeConnectedEvent;
|
|
144
|
+
export declare function buildChannelBridgeDisconnectedEvent(input: {
|
|
145
|
+
bridge_id: string;
|
|
146
|
+
deleted_message_count: number;
|
|
147
|
+
}): ChannelBridgeDisconnectedEvent;
|
|
148
|
+
export declare function buildRoutinePlannedEvent(routine: RoutineRecord): RoutinePlannedEvent;
|
|
149
|
+
export declare function buildRoutineCommittedEvent(routine: RoutineRecord, options?: {
|
|
150
|
+
envelope_content_hash?: string;
|
|
151
|
+
}): RoutineCommittedEvent;
|
|
152
|
+
export declare function buildRoutineExecutedEvent(input: {
|
|
153
|
+
routine_id: string;
|
|
154
|
+
name: string;
|
|
155
|
+
step_count: number;
|
|
156
|
+
}): RoutineExecutedEvent;
|
|
157
|
+
export declare function buildRoutineStepFailedEvent(input: {
|
|
158
|
+
step_index: number;
|
|
159
|
+
reason: string;
|
|
160
|
+
routine_id?: string;
|
|
161
|
+
routine_name?: string;
|
|
162
|
+
}): RoutineStepFailedEvent;
|
|
163
|
+
export declare function buildStateRehydratedEvent(snapshot: SidekickStores): StateRehydratedEvent;
|
|
164
|
+
export declare function serializeLocalChannelMessage(message: ChannelMessageRecord, channelName?: string): Record<string, unknown>;
|
|
165
|
+
export {};
|
|
166
|
+
//# sourceMappingURL=sidekick-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidekick-events.d.ts","sourceRoot":"","sources":["../../src/sidekick-events.ts"],"names":[],"mappings":"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"}
|