wicked-crew 0.7.46 → 0.7.48
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/api/capture.d.ts +2 -2
- package/dist/api/chat-citations.d.ts +10 -1
- package/dist/api/chat-citations.d.ts.map +1 -1
- package/dist/api/chat-citations.js +28 -0
- package/dist/api/chat-citations.js.map +1 -1
- package/dist/api/chat-scope.d.ts +4 -2
- package/dist/api/chat-scope.d.ts.map +1 -1
- package/dist/api/chat-scope.js +35 -3
- package/dist/api/chat-scope.js.map +1 -1
- package/dist/api/chat-transcripts.d.ts +23 -1
- package/dist/api/chat-transcripts.d.ts.map +1 -1
- package/dist/api/chat-transcripts.js +61 -6
- package/dist/api/chat-transcripts.js.map +1 -1
- package/dist/api/delivery-index.d.ts +21 -0
- package/dist/api/delivery-index.d.ts.map +1 -1
- package/dist/api/delivery-index.js +36 -0
- package/dist/api/delivery-index.js.map +1 -1
- package/dist/api/elicitation-cache.d.ts +12 -0
- package/dist/api/elicitation-cache.d.ts.map +1 -1
- package/dist/api/elicitation-cache.js +17 -1
- package/dist/api/elicitation-cache.js.map +1 -1
- package/dist/api/eval-sample.d.ts +12 -12
- package/dist/api/governance-steering.d.ts.map +1 -1
- package/dist/api/governance-steering.js +1 -0
- package/dist/api/governance-steering.js.map +1 -1
- package/dist/api/mcp.d.ts +4 -4
- package/dist/api/policy-landing.d.ts +55 -0
- package/dist/api/policy-landing.d.ts.map +1 -0
- package/dist/api/policy-landing.js +174 -0
- package/dist/api/policy-landing.js.map +1 -0
- package/dist/api/recording.d.ts +228 -0
- package/dist/api/recording.d.ts.map +1 -0
- package/dist/api/recording.js +1140 -0
- package/dist/api/recording.js.map +1 -0
- package/dist/api/routes.d.ts +42 -39
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +362 -107
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-timing-index.d.ts +17 -0
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +43 -1
- package/dist/api/run-timing-index.js.map +1 -1
- package/dist/api/server.d.ts +27 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +168 -4
- package/dist/api/server.js.map +1 -1
- package/dist/api/testing.d.ts +4 -4
- package/dist/api/testing.d.ts.map +1 -1
- package/dist/api/testing.js +3 -0
- package/dist/api/testing.js.map +1 -1
- package/dist/api/watch-routes.d.ts +30 -0
- package/dist/api/watch-routes.d.ts.map +1 -0
- package/dist/api/watch-routes.js +104 -0
- package/dist/api/watch-routes.js.map +1 -0
- package/dist/campaigns/routes.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +20 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +52 -1
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +193 -5
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/run-identity.js +1 -1
- package/dist/core/run-identity.js.map +1 -1
- package/dist/core/walkthrough-root.d.ts +21 -0
- package/dist/core/walkthrough-root.d.ts.map +1 -0
- package/dist/core/walkthrough-root.js +66 -0
- package/dist/core/walkthrough-root.js.map +1 -0
- package/dist/decisions/chat-recorder.d.ts +129 -0
- package/dist/decisions/chat-recorder.d.ts.map +1 -0
- package/dist/decisions/chat-recorder.js +367 -0
- package/dist/decisions/chat-recorder.js.map +1 -0
- package/dist/decisions/consider.d.ts +102 -0
- package/dist/decisions/consider.d.ts.map +1 -0
- package/dist/decisions/consider.js +207 -0
- package/dist/decisions/consider.js.map +1 -0
- package/dist/decisions/derive.d.ts +79 -0
- package/dist/decisions/derive.d.ts.map +1 -0
- package/dist/decisions/derive.js +282 -0
- package/dist/decisions/derive.js.map +1 -0
- package/dist/decisions/events.d.ts +25 -0
- package/dist/decisions/events.d.ts.map +1 -0
- package/dist/decisions/events.js +24 -0
- package/dist/decisions/events.js.map +1 -0
- package/dist/decisions/ingest.d.ts +51 -0
- package/dist/decisions/ingest.d.ts.map +1 -0
- package/dist/decisions/ingest.js +100 -0
- package/dist/decisions/ingest.js.map +1 -0
- package/dist/decisions/land.d.ts +100 -0
- package/dist/decisions/land.d.ts.map +1 -0
- package/dist/decisions/land.js +466 -0
- package/dist/decisions/land.js.map +1 -0
- package/dist/decisions/ledger.d.ts +60 -0
- package/dist/decisions/ledger.d.ts.map +1 -0
- package/dist/decisions/ledger.js +246 -0
- package/dist/decisions/ledger.js.map +1 -0
- package/dist/decisions/routes.d.ts +10 -0
- package/dist/decisions/routes.d.ts.map +1 -0
- package/dist/decisions/routes.js +141 -0
- package/dist/decisions/routes.js.map +1 -0
- package/dist/decisions/rules-text.d.ts +21 -0
- package/dist/decisions/rules-text.d.ts.map +1 -0
- package/dist/decisions/rules-text.js +50 -0
- package/dist/decisions/rules-text.js.map +1 -0
- package/dist/decisions/types.d.ts +120 -0
- package/dist/decisions/types.d.ts.map +1 -0
- package/dist/decisions/types.js +19 -0
- package/dist/decisions/types.js.map +1 -0
- package/dist/editors/csp.d.ts +31 -0
- package/dist/editors/csp.d.ts.map +1 -0
- package/dist/editors/csp.js +46 -0
- package/dist/editors/csp.js.map +1 -0
- package/dist/editors/pack-install.d.ts +28 -0
- package/dist/editors/pack-install.d.ts.map +1 -0
- package/dist/editors/pack-install.js +153 -0
- package/dist/editors/pack-install.js.map +1 -0
- package/dist/editors/registry.d.ts +142 -0
- package/dist/editors/registry.d.ts.map +1 -0
- package/dist/editors/registry.js +255 -0
- package/dist/editors/registry.js.map +1 -0
- package/dist/editors/routes.d.ts +46 -0
- package/dist/editors/routes.d.ts.map +1 -0
- package/dist/editors/routes.js +166 -0
- package/dist/editors/routes.js.map +1 -0
- package/dist/interactive/bridge-pool.d.ts +7 -2
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +6 -1
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/draft-events.d.ts.map +1 -1
- package/dist/interactive/draft-events.js +1 -0
- package/dist/interactive/draft-events.js.map +1 -1
- package/dist/interactive/theme-events.d.ts +119 -0
- package/dist/interactive/theme-events.d.ts.map +1 -0
- package/dist/interactive/theme-events.js +606 -0
- package/dist/interactive/theme-events.js.map +1 -0
- package/dist/projects/events.d.ts.map +1 -1
- package/dist/projects/events.js +2 -1
- package/dist/projects/events.js.map +1 -1
- package/dist/projects/routes.d.ts +2 -2
- package/dist/projects/state-home-preflight.d.ts.map +1 -1
- package/dist/projects/state-home-preflight.js +3 -0
- package/dist/projects/state-home-preflight.js.map +1 -1
- package/dist/projects/state-home-registry.d.ts.map +1 -1
- package/dist/projects/state-home-registry.js +2 -0
- package/dist/projects/state-home-registry.js.map +1 -1
- package/dist/projects/state-home.d.ts +6 -0
- package/dist/projects/state-home.d.ts.map +1 -1
- package/dist/projects/state-home.js +28 -1
- package/dist/projects/state-home.js.map +1 -1
- package/dist/qe/acceptance.d.ts +45 -4
- package/dist/qe/acceptance.d.ts.map +1 -1
- package/dist/qe/acceptance.js +93 -4
- package/dist/qe/acceptance.js.map +1 -1
- package/dist/qe/ledger.d.ts +20 -0
- package/dist/qe/ledger.d.ts.map +1 -1
- package/dist/qe/ledger.js +34 -0
- package/dist/qe/ledger.js.map +1 -1
- package/dist/qe/walkthrough-acceptance.d.ts +82 -0
- package/dist/qe/walkthrough-acceptance.d.ts.map +1 -0
- package/dist/qe/walkthrough-acceptance.js +248 -0
- package/dist/qe/walkthrough-acceptance.js.map +1 -0
- package/dist/skills/base-skill.d.ts.map +1 -1
- package/dist/skills/base-skill.js +3 -2
- package/dist/skills/base-skill.js.map +1 -1
- package/dist/skills/plugin-source.d.ts +19 -1
- package/dist/skills/plugin-source.d.ts.map +1 -1
- package/dist/skills/plugin-source.js +31 -2
- package/dist/skills/plugin-source.js.map +1 -1
- package/dist/skills/runtime.d.ts +11 -2
- package/dist/skills/runtime.d.ts.map +1 -1
- package/dist/skills/runtime.js +29 -1
- package/dist/skills/runtime.js.map +1 -1
- package/dist/skills/store.d.ts +14 -1
- package/dist/skills/store.d.ts.map +1 -1
- package/dist/skills/store.js +19 -5
- package/dist/skills/store.js.map +1 -1
- package/dist/standing-orders/routes.d.ts +22 -22
- package/dist/standing-orders/store.d.ts +10 -10
- package/dist/watch/checks/check-failed.d.ts +24 -0
- package/dist/watch/checks/check-failed.d.ts.map +1 -0
- package/dist/watch/checks/check-failed.js +56 -0
- package/dist/watch/checks/check-failed.js.map +1 -0
- package/dist/watch/checks/claim-vs-evidence.d.ts +30 -0
- package/dist/watch/checks/claim-vs-evidence.d.ts.map +1 -0
- package/dist/watch/checks/claim-vs-evidence.js +152 -0
- package/dist/watch/checks/claim-vs-evidence.js.map +1 -0
- package/dist/watch/checks/deliver-audit.d.ts +19 -0
- package/dist/watch/checks/deliver-audit.d.ts.map +1 -0
- package/dist/watch/checks/deliver-audit.js +129 -0
- package/dist/watch/checks/deliver-audit.js.map +1 -0
- package/dist/watch/checks/index.d.ts +8 -0
- package/dist/watch/checks/index.d.ts.map +1 -0
- package/dist/watch/checks/index.js +24 -0
- package/dist/watch/checks/index.js.map +1 -0
- package/dist/watch/checks/lag.d.ts +24 -0
- package/dist/watch/checks/lag.d.ts.map +1 -0
- package/dist/watch/checks/lag.js +55 -0
- package/dist/watch/checks/lag.js.map +1 -0
- package/dist/watch/checks/quiet-after-claim.d.ts +17 -0
- package/dist/watch/checks/quiet-after-claim.d.ts.map +1 -0
- package/dist/watch/checks/quiet-after-claim.js +89 -0
- package/dist/watch/checks/quiet-after-claim.js.map +1 -0
- package/dist/watch/checks/ungated.d.ts +12 -0
- package/dist/watch/checks/ungated.d.ts.map +1 -0
- package/dist/watch/checks/ungated.js +64 -0
- package/dist/watch/checks/ungated.js.map +1 -0
- package/dist/watch/checks/warned-rule.d.ts +26 -0
- package/dist/watch/checks/warned-rule.d.ts.map +1 -0
- package/dist/watch/checks/warned-rule.js +126 -0
- package/dist/watch/checks/warned-rule.js.map +1 -0
- package/dist/watch/emit.d.ts +122 -0
- package/dist/watch/emit.d.ts.map +1 -0
- package/dist/watch/emit.js +443 -0
- package/dist/watch/emit.js.map +1 -0
- package/dist/watch/events.d.ts +21 -0
- package/dist/watch/events.d.ts.map +1 -0
- package/dist/watch/events.js +21 -0
- package/dist/watch/events.js.map +1 -0
- package/dist/watch/keys.d.ts +15 -0
- package/dist/watch/keys.d.ts.map +1 -0
- package/dist/watch/keys.js +23 -0
- package/dist/watch/keys.js.map +1 -0
- package/dist/watch/lanes.d.ts +41 -0
- package/dist/watch/lanes.d.ts.map +1 -0
- package/dist/watch/lanes.js +73 -0
- package/dist/watch/lanes.js.map +1 -0
- package/dist/watch/loader.d.ts +47 -0
- package/dist/watch/loader.d.ts.map +1 -0
- package/dist/watch/loader.js +178 -0
- package/dist/watch/loader.js.map +1 -0
- package/dist/watch/registry.d.ts +166 -0
- package/dist/watch/registry.d.ts.map +1 -0
- package/dist/watch/registry.js +589 -0
- package/dist/watch/registry.js.map +1 -0
- package/dist/watch/ring.d.ts +32 -0
- package/dist/watch/ring.d.ts.map +1 -0
- package/dist/watch/ring.js +90 -0
- package/dist/watch/ring.js.map +1 -0
- package/dist/watch/router.d.ts +25 -0
- package/dist/watch/router.d.ts.map +1 -0
- package/dist/watch/router.js +87 -0
- package/dist/watch/router.js.map +1 -0
- package/dist/watch/sources.d.ts +42 -0
- package/dist/watch/sources.d.ts.map +1 -0
- package/dist/watch/sources.js +104 -0
- package/dist/watch/sources.js.map +1 -0
- package/dist/watch/types.d.ts +129 -0
- package/dist/watch/types.d.ts.map +1 -0
- package/dist/watch/types.js +6 -0
- package/dist/watch/types.js.map +1 -0
- package/endpoint-manifest.json +272 -1
- package/package.json +3 -2
- package/watch/entries/claim-vs-evidence.json +13 -0
- package/watch/entries/deliver-audit.json +17 -0
- package/watch/entries/quiet-after-claim.json +16 -0
- package/watch/entries/registry-check-failed.json +12 -0
- package/watch/entries/registry-lagging.json +12 -0
- package/watch/entries/risky-call.json +12 -0
- package/watch/entries/ungated.json +13 -0
- package/dist/api/demo.d.ts +0 -90
- package/dist/api/demo.d.ts.map +0 -1
- package/dist/api/demo.js +0 -492
- package/dist/api/demo.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision capture's bus facts (DES-decision-capture §4.6, DC-S4a). Post-commit only; domain
|
|
3
|
+
* column `wicked-crew` (the project bus's emit). Payloads carry ids and counts, NEVER words — the
|
|
4
|
+
* engine's rule — so the operator's words stay in the 0600 ledger. Idempotency keys are
|
|
5
|
+
* type-inclusive and occurrence-unique. (`wicked.crew.rule.considered` is DC-S7's.)
|
|
6
|
+
*/
|
|
7
|
+
export declare const DECISION_DETECTED = "wicked.crew.decision.detected";
|
|
8
|
+
export declare const DECISION_OFFERED = "wicked.crew.decision.offered";
|
|
9
|
+
export declare const DECISION_REMEMBERED = "wicked.crew.decision.remembered";
|
|
10
|
+
export declare const DECISION_UNDONE = "wicked.crew.decision.undone";
|
|
11
|
+
export declare const DECISION_DISMISSED = "wicked.crew.decision.dismissed";
|
|
12
|
+
export declare const DECISION_RESTATED = "wicked.crew.decision.restated";
|
|
13
|
+
export declare const DECISION_WIDENED = "wicked.crew.decision.widened";
|
|
14
|
+
/** DC-S7 (§4.6): counts and ids only — `considered:<chat>:<turn>` / `considered:<run>:<ord>:<attempt>`. */
|
|
15
|
+
export declare const RULE_CONSIDERED = "wicked.crew.rule.considered";
|
|
16
|
+
export interface DecisionBusEmit {
|
|
17
|
+
(type: string, payload: Record<string, unknown>, idempotencyKey: string): Promise<boolean>;
|
|
18
|
+
}
|
|
19
|
+
/** The fact for one decision event — the payload is ids/enums/counts only (a test pins no words). */
|
|
20
|
+
export declare function decisionFact(type: string, payload: Record<string, string | number | boolean | null | undefined>, key: string): {
|
|
21
|
+
type: string;
|
|
22
|
+
payload: Record<string, string | number | boolean | null>;
|
|
23
|
+
key: string;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/decisions/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,iBAAiB,kCAAkC,CAAC;AACjE,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAC/D,eAAO,MAAM,mBAAmB,oCAAoC,CAAC;AACrE,eAAO,MAAM,eAAe,gCAAgC,CAAC;AAC7D,eAAO,MAAM,kBAAkB,mCAAmC,CAAC;AACnE,eAAO,MAAM,iBAAiB,kCAAkC,CAAC;AACjE,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAC/D,2GAA2G;AAC3G,eAAO,MAAM,eAAe,gCAAgC,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5F;AAED,qGAAqG;AACrG,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,EACrE,GAAG,EAAE,MAAM,GACV;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAI1F"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision capture's bus facts (DES-decision-capture §4.6, DC-S4a). Post-commit only; domain
|
|
3
|
+
* column `wicked-crew` (the project bus's emit). Payloads carry ids and counts, NEVER words — the
|
|
4
|
+
* engine's rule — so the operator's words stay in the 0600 ledger. Idempotency keys are
|
|
5
|
+
* type-inclusive and occurrence-unique. (`wicked.crew.rule.considered` is DC-S7's.)
|
|
6
|
+
*/
|
|
7
|
+
export const DECISION_DETECTED = 'wicked.crew.decision.detected';
|
|
8
|
+
export const DECISION_OFFERED = 'wicked.crew.decision.offered';
|
|
9
|
+
export const DECISION_REMEMBERED = 'wicked.crew.decision.remembered';
|
|
10
|
+
export const DECISION_UNDONE = 'wicked.crew.decision.undone';
|
|
11
|
+
export const DECISION_DISMISSED = 'wicked.crew.decision.dismissed';
|
|
12
|
+
export const DECISION_RESTATED = 'wicked.crew.decision.restated';
|
|
13
|
+
export const DECISION_WIDENED = 'wicked.crew.decision.widened';
|
|
14
|
+
/** DC-S7 (§4.6): counts and ids only — `considered:<chat>:<turn>` / `considered:<run>:<ord>:<attempt>`. */
|
|
15
|
+
export const RULE_CONSIDERED = 'wicked.crew.rule.considered';
|
|
16
|
+
/** The fact for one decision event — the payload is ids/enums/counts only (a test pins no words). */
|
|
17
|
+
export function decisionFact(type, payload, key) {
|
|
18
|
+
const clean = {};
|
|
19
|
+
for (const [k, v] of Object.entries(payload))
|
|
20
|
+
if (v !== undefined)
|
|
21
|
+
clean[k] = v;
|
|
22
|
+
return { type, payload: clean, key };
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/decisions/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,8BAA8B,CAAC;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,iCAAiC,CAAC;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,gCAAgC,CAAC;AACnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,8BAA8B,CAAC;AAC/D,2GAA2G;AAC3G,MAAM,CAAC,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAM7D,qGAAqG;AACrG,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,OAAqE,EACrE,GAAW;IAEX,MAAM,KAAK,GAAqD,EAAE,CAAC;IACnE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,IAAI,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where operator words enter the ledger (DES-decision-capture §4.3.1 / §4.3.2 / §4.3.3, DC-S4a + S4b).
|
|
3
|
+
*
|
|
4
|
+
* The structured hosts — a gate note, an elicitation answer, a run inject — call
|
|
5
|
+
* {@link ingestDecision} POST-COMMIT, after their action succeeded; the studio chat recorder
|
|
6
|
+
* (`chat-recorder.ts`) calls it at the end of a turn with the model's labels. Only a `human` actor is
|
|
7
|
+
* recorded: an agent's words are never a decision source (operator decision 4). `auth_mode` is the
|
|
8
|
+
* daemon's resolved auth and decides auto eligibility (§4.4). Derivation is deterministic; under
|
|
9
|
+
* `WICKED_DECISIONS=on` the record's route is then acted on (auto → `remember()`, offer → the review
|
|
10
|
+
* queue). Never throws into the host route: a failure is logged and the host's answer stands.
|
|
11
|
+
*/
|
|
12
|
+
import type { Actor } from '../core/types.js';
|
|
13
|
+
import { type DecisionService } from './land.js';
|
|
14
|
+
import type { DecisionHost, DecisionModelLabels, DecisionRecord, DecisionType } from './types.js';
|
|
15
|
+
export interface HostWords {
|
|
16
|
+
host: Extract<DecisionHost, 'gate' | 'elicitation' | 'inject' | 'studio-chat'>;
|
|
17
|
+
actor: Actor;
|
|
18
|
+
/** The operator's verbatim free text ('' when the decision was a bare choice). */
|
|
19
|
+
words: string;
|
|
20
|
+
/** A bare approve/reject, or a picked elicitation option, when there were no words. */
|
|
21
|
+
choice?: string;
|
|
22
|
+
projectId: string | null;
|
|
23
|
+
/** The structured hosts: the run the words steered. */
|
|
24
|
+
runId?: string;
|
|
25
|
+
ord?: number;
|
|
26
|
+
gateId?: string;
|
|
27
|
+
elicitationId?: string;
|
|
28
|
+
/** The chat host: the chat and the turn whose operator message carried the words. */
|
|
29
|
+
chatId?: string;
|
|
30
|
+
turnId?: string;
|
|
31
|
+
/** The chat host: the recorder seat's labels for this span, and the other seats' votes. */
|
|
32
|
+
labels?: DecisionModelLabels;
|
|
33
|
+
votes?: Array<{
|
|
34
|
+
cli_key: string;
|
|
35
|
+
type: DecisionType;
|
|
36
|
+
codify: boolean;
|
|
37
|
+
}>;
|
|
38
|
+
/** The chat host, DOC-4: the proposal a go-ahead approved (the previous turn, the recorder seat). */
|
|
39
|
+
proposal?: {
|
|
40
|
+
turn_id: string;
|
|
41
|
+
cli_key: string;
|
|
42
|
+
excerpt: string;
|
|
43
|
+
} | null;
|
|
44
|
+
/**
|
|
45
|
+
* DOC-4: the decision text written from the approved proposal (+ amendment). It replaces the
|
|
46
|
+
* derived statement — a bare approval has no template of its own — while ORIGIN keeps the words.
|
|
47
|
+
*/
|
|
48
|
+
statement?: string;
|
|
49
|
+
}
|
|
50
|
+
export declare function ingestDecision(service: DecisionService, input: HostWords): Promise<DecisionRecord | null>;
|
|
51
|
+
//# sourceMappingURL=ingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/decisions/ingest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElG,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,CAAC,CAAC;IAC/E,KAAK,EAAE,KAAK,CAAC;IACb,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACxE,qGAAqG;IACrG,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAmF/G"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where operator words enter the ledger (DES-decision-capture §4.3.1 / §4.3.2 / §4.3.3, DC-S4a + S4b).
|
|
3
|
+
*
|
|
4
|
+
* The structured hosts — a gate note, an elicitation answer, a run inject — call
|
|
5
|
+
* {@link ingestDecision} POST-COMMIT, after their action succeeded; the studio chat recorder
|
|
6
|
+
* (`chat-recorder.ts`) calls it at the end of a turn with the model's labels. Only a `human` actor is
|
|
7
|
+
* recorded: an agent's words are never a decision source (operator decision 4). `auth_mode` is the
|
|
8
|
+
* daemon's resolved auth and decides auto eligibility (§4.4). Derivation is deterministic; under
|
|
9
|
+
* `WICKED_DECISIONS=on` the record's route is then acted on (auto → `remember()`, offer → the review
|
|
10
|
+
* queue). Never throws into the host route: a failure is logged and the host's answer stands.
|
|
11
|
+
*/
|
|
12
|
+
import { createHash } from 'node:crypto';
|
|
13
|
+
import { deriveDecision } from './derive.js';
|
|
14
|
+
import { DECISION_DETECTED } from './events.js';
|
|
15
|
+
import { newDecisionId } from './land.js';
|
|
16
|
+
export async function ingestDecision(service, input) {
|
|
17
|
+
const { ledger, authMode, log } = service.deps;
|
|
18
|
+
if (service.mode === 'off')
|
|
19
|
+
return null;
|
|
20
|
+
// §4.3.1: only human words are recorded — an agent token writes nothing at all.
|
|
21
|
+
if (input.actor.kind !== 'human')
|
|
22
|
+
return null;
|
|
23
|
+
const words = input.words.trim();
|
|
24
|
+
if (words === '' && input.choice === undefined)
|
|
25
|
+
return null;
|
|
26
|
+
const where = input.runId !== undefined ? `run ${input.runId}` : `chat ${input.chatId ?? '?'}`;
|
|
27
|
+
try {
|
|
28
|
+
const now = service.deps.now?.() ?? Date.now();
|
|
29
|
+
const inForce = words === '' ? [] : await service.inForce(input.projectId);
|
|
30
|
+
const d = deriveDecision({
|
|
31
|
+
words,
|
|
32
|
+
actorKind: 'human',
|
|
33
|
+
authMode,
|
|
34
|
+
wordsSource: 'typed',
|
|
35
|
+
projectId: input.projectId,
|
|
36
|
+
inForce,
|
|
37
|
+
recurrence: (key) => ledger.recurrence(key),
|
|
38
|
+
...(input.labels !== undefined ? { labels: input.labels } : {}),
|
|
39
|
+
now,
|
|
40
|
+
});
|
|
41
|
+
const statement = input.statement !== undefined && input.statement.trim() !== '' ? input.statement.trim() : d.statement;
|
|
42
|
+
const record = {
|
|
43
|
+
op: 'record',
|
|
44
|
+
v: 1,
|
|
45
|
+
id: newDecisionId(now),
|
|
46
|
+
at: now,
|
|
47
|
+
project_id: input.projectId,
|
|
48
|
+
host: input.host,
|
|
49
|
+
origin: {
|
|
50
|
+
actor: { id: input.actor.id, kind: 'human', trust: input.actor.trust },
|
|
51
|
+
auth_mode: authMode,
|
|
52
|
+
...(input.chatId !== undefined ? { chat_id: input.chatId } : {}),
|
|
53
|
+
...(input.turnId !== undefined ? { turn_id: input.turnId } : {}),
|
|
54
|
+
...(input.runId !== undefined ? { run_id: input.runId } : {}),
|
|
55
|
+
...(input.ord !== undefined ? { ord: input.ord } : {}),
|
|
56
|
+
...(input.gateId !== undefined ? { gate_id: input.gateId } : {}),
|
|
57
|
+
...(input.elicitationId !== undefined ? { elicitation_id: input.elicitationId } : {}),
|
|
58
|
+
words: d.words,
|
|
59
|
+
...(input.choice !== undefined ? { choice: input.choice } : {}),
|
|
60
|
+
message_sha256: createHash('sha256').update(input.words).digest('hex'),
|
|
61
|
+
proposal: input.proposal ?? null,
|
|
62
|
+
words_source: 'typed',
|
|
63
|
+
redacted: d.redacted,
|
|
64
|
+
},
|
|
65
|
+
labels: {
|
|
66
|
+
...(input.labels !== undefined ? { model: input.labels } : {}),
|
|
67
|
+
...(input.votes !== undefined && input.votes.length > 0 ? { votes: input.votes } : {}),
|
|
68
|
+
deterministic: { template: d.template, exclusions: d.exclusions, dgc: d.dgc, recurrence: d.recurrence },
|
|
69
|
+
},
|
|
70
|
+
derived: {
|
|
71
|
+
statement,
|
|
72
|
+
polarity: d.polarity,
|
|
73
|
+
key: d.key,
|
|
74
|
+
scope: d.scope,
|
|
75
|
+
steering_type: d.steering_type,
|
|
76
|
+
},
|
|
77
|
+
route: d.route,
|
|
78
|
+
...(d.rule_ref !== undefined ? { rule_ref: d.rule_ref } : {}),
|
|
79
|
+
};
|
|
80
|
+
ledger.appendRecord(record);
|
|
81
|
+
const emit = service.deps.emit;
|
|
82
|
+
if (emit !== null && emit !== undefined) {
|
|
83
|
+
await emit(DECISION_DETECTED, {
|
|
84
|
+
decision_id: record.id,
|
|
85
|
+
project_id: record.project_id,
|
|
86
|
+
host: record.host,
|
|
87
|
+
type: input.choice !== undefined && words === '' ? 'choice' : (d.template ?? 'none'),
|
|
88
|
+
route: record.route,
|
|
89
|
+
template: d.template,
|
|
90
|
+
}, `detected:${record.id}`).catch((err) => log?.(`[decisions] emit detected failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
91
|
+
}
|
|
92
|
+
await service.act(record);
|
|
93
|
+
return record;
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
log?.(`[decisions] recording ${input.host} words for ${where} failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/decisions/ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE landing path for decisions (DES-decision-capture §4.5, DC-S4a): `remember()` and its
|
|
3
|
+
* siblings `undo` / `dismiss` / `widen` / `same`, plus the act-on-route step `ingest` hands over.
|
|
4
|
+
*
|
|
5
|
+
* Every landing — auto, the chip, Needs You, and `POST /proposals/:id/approve` of a proposal this
|
|
6
|
+
* ledger filed — goes through `remember()`, and the human check lives INSIDE it (actor kind
|
|
7
|
+
* `human` ∧ trust ≥ operator), so no route branch can skip it. Words, actor and ORIGIN come from
|
|
8
|
+
* the ledger, never from a proposal payload (which carries only the decision id).
|
|
9
|
+
*/
|
|
10
|
+
import type { CoreAdapter } from '../core/adapter.js';
|
|
11
|
+
import type { Actor, DecisionChangedFrame, SteeringType } from '../core/types.js';
|
|
12
|
+
import { type AuthMode } from '../api/auth.js';
|
|
13
|
+
import type { AuditLog } from '../api/audit.js';
|
|
14
|
+
import type { InForceRule } from './derive.js';
|
|
15
|
+
import { type DecisionBusEmit } from './events.js';
|
|
16
|
+
import type { DecisionLedger } from './ledger.js';
|
|
17
|
+
import type { DecisionDismissReason, DecisionRecord, DecisionsMode } from './types.js';
|
|
18
|
+
/** A refusal with its HTTP status (403 human check, 404 unknown, 409 wrong state, 502 upstream). */
|
|
19
|
+
export declare class DecisionError extends Error {
|
|
20
|
+
readonly status: 400 | 403 | 404 | 409 | 501 | 502;
|
|
21
|
+
constructor(status: 400 | 403 | 404 | 409 | 501 | 502, message: string);
|
|
22
|
+
}
|
|
23
|
+
export interface DecisionDeps {
|
|
24
|
+
ledger: DecisionLedger;
|
|
25
|
+
mode: DecisionsMode;
|
|
26
|
+
authMode: AuthMode;
|
|
27
|
+
estateTool: (tool: string, args: Record<string, unknown>) => Promise<unknown>;
|
|
28
|
+
adapter: Pick<CoreAdapter, 'projectRulesSupported' | 'upsertConformanceRule' | 'readConformanceRule' | 'retireConformanceRule' | 'listConformanceRules'> & Partial<Pick<CoreAdapter, 'considerRules'>>;
|
|
29
|
+
audit: AuditLog;
|
|
30
|
+
emit?: DecisionBusEmit | null;
|
|
31
|
+
broadcast?: (frame: DecisionChangedFrame) => void;
|
|
32
|
+
log?: (msg: string) => void;
|
|
33
|
+
now?: () => number;
|
|
34
|
+
}
|
|
35
|
+
export interface RememberEdits {
|
|
36
|
+
statement?: string;
|
|
37
|
+
scope?: 'project' | 'everywhere';
|
|
38
|
+
steering_type?: SteeringType;
|
|
39
|
+
}
|
|
40
|
+
/** `dec_` + a uuid v7-shaped id: a 48-bit ms timestamp prefix so ids sort by time. */
|
|
41
|
+
export declare function newDecisionId(now?: number): string;
|
|
42
|
+
export declare class DecisionService {
|
|
43
|
+
readonly deps: DecisionDeps;
|
|
44
|
+
constructor(deps: DecisionDeps);
|
|
45
|
+
get mode(): DecisionsMode;
|
|
46
|
+
private readonly inFlight;
|
|
47
|
+
/** Per-decision serialization: two concurrent writes on one decision never both land (codex). */
|
|
48
|
+
private readonly locks;
|
|
49
|
+
private locked;
|
|
50
|
+
/** Run host-side work off the request path (`void`), tracked so tests and shutdown can await it. */
|
|
51
|
+
track(work: Promise<unknown>): void;
|
|
52
|
+
/** Resolves once every tracked host recording has settled. */
|
|
53
|
+
idle(): Promise<void>;
|
|
54
|
+
private now;
|
|
55
|
+
private log;
|
|
56
|
+
private requireHuman;
|
|
57
|
+
private requireRecord;
|
|
58
|
+
private viewOf;
|
|
59
|
+
private fact;
|
|
60
|
+
private changed;
|
|
61
|
+
private outcome;
|
|
62
|
+
/** The in-force rules for a project (this project's and the global ones). Fail-soft: `[]` + a log. */
|
|
63
|
+
inForce(projectId: string | null): Promise<InForceRule[]>;
|
|
64
|
+
/** Act on a record's route. Never throws: a failure is a `landing_failed` outcome + a log. */
|
|
65
|
+
act(record: DecisionRecord): Promise<void>;
|
|
66
|
+
/** Re-drive records whose route asks for an action but which have no outcome (a restart mid-landing). */
|
|
67
|
+
redrive(): Promise<number>;
|
|
68
|
+
/** The review-queue proposal already filed for a decision (idempotent re-drive), or `null`. */
|
|
69
|
+
private proposalFor;
|
|
70
|
+
private submitProposal;
|
|
71
|
+
/** File the decision into the review queue (the chip + its Needs You row are the same object). */
|
|
72
|
+
offer(record: DecisionRecord): Promise<string>;
|
|
73
|
+
private offerLocked;
|
|
74
|
+
remember(id: string, actor: Actor, opts: {
|
|
75
|
+
how: 'auto' | 'chip' | 'needs-you';
|
|
76
|
+
edits?: RememberEdits;
|
|
77
|
+
}): Promise<{
|
|
78
|
+
rule_id: string;
|
|
79
|
+
proposal_id: string;
|
|
80
|
+
project?: string;
|
|
81
|
+
}>;
|
|
82
|
+
private rememberLocked;
|
|
83
|
+
private isApproved;
|
|
84
|
+
/** Approve a proposal; one already approved (a re-drive after a crash) is not an error. */
|
|
85
|
+
private approve;
|
|
86
|
+
undo(id: string, actor: Actor): Promise<void>;
|
|
87
|
+
private undoLocked;
|
|
88
|
+
dismiss(id: string, actor: Actor, reason: DecisionDismissReason): Promise<void>;
|
|
89
|
+
private dismissLocked;
|
|
90
|
+
/** B7 "Same as your rule '…'? · Same · New rule" — resolves a `maybe-restated` decision. */
|
|
91
|
+
same(id: string, actor: Actor, same: boolean): Promise<{
|
|
92
|
+
rule_id?: string;
|
|
93
|
+
}>;
|
|
94
|
+
private sameLocked;
|
|
95
|
+
/** B8: one project-less successor that supersedes the same rule in every project. */
|
|
96
|
+
widen(id: string, actor: Actor): Promise<{
|
|
97
|
+
rule_id: string;
|
|
98
|
+
}>;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=land.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"land.d.ts","sourceRoot":"","sources":["../../src/decisions/land.ts"],"names":[],"mappings":"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"}
|