wicked-crew 0.16.11 → 0.16.13
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/README.md +28 -8
- package/dist/api/artifact-outline.d.ts +64 -0
- package/dist/api/artifact-outline.d.ts.map +1 -0
- package/dist/api/artifact-outline.js +254 -0
- package/dist/api/artifact-outline.js.map +1 -0
- package/dist/api/beneath.d.ts +76 -0
- package/dist/api/beneath.d.ts.map +1 -0
- package/dist/api/beneath.js +214 -0
- package/dist/api/beneath.js.map +1 -0
- package/dist/api/capture.d.ts +2 -2
- package/dist/api/chat-citations.d.ts +25 -1
- package/dist/api/chat-citations.d.ts.map +1 -1
- package/dist/api/chat-citations.js +186 -61
- package/dist/api/chat-citations.js.map +1 -1
- package/dist/api/chat-context.d.ts +236 -0
- package/dist/api/chat-context.d.ts.map +1 -0
- package/dist/api/chat-context.js +808 -0
- package/dist/api/chat-context.js.map +1 -0
- package/dist/api/chat-history.d.ts +20 -0
- package/dist/api/chat-history.d.ts.map +1 -1
- package/dist/api/chat-history.js +46 -1
- package/dist/api/chat-history.js.map +1 -1
- package/dist/api/chat-proposals.d.ts +534 -0
- package/dist/api/chat-proposals.d.ts.map +1 -0
- package/dist/api/chat-proposals.js +1562 -0
- package/dist/api/chat-proposals.js.map +1 -0
- package/dist/api/chat-scope.d.ts +41 -0
- package/dist/api/chat-scope.d.ts.map +1 -1
- package/dist/api/chat-scope.js +87 -15
- package/dist/api/chat-scope.js.map +1 -1
- package/dist/api/chat-transcripts.d.ts +27 -2
- package/dist/api/chat-transcripts.d.ts.map +1 -1
- package/dist/api/chat-transcripts.js +105 -4
- package/dist/api/chat-transcripts.js.map +1 -1
- package/dist/api/diagnostics.d.ts +15 -0
- package/dist/api/diagnostics.d.ts.map +1 -1
- package/dist/api/diagnostics.js +56 -0
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/api/elicitation-cache.d.ts +13 -0
- package/dist/api/elicitation-cache.d.ts.map +1 -1
- package/dist/api/elicitation-cache.js +12 -0
- package/dist/api/elicitation-cache.js.map +1 -1
- package/dist/api/eval-sample.d.ts +12 -12
- package/dist/api/frame-guard.d.ts +62 -0
- package/dist/api/frame-guard.d.ts.map +1 -0
- package/dist/api/frame-guard.js +97 -0
- package/dist/api/frame-guard.js.map +1 -0
- package/dist/api/governance-steering.d.ts +4 -4
- package/dist/api/multiscope.d.ts +3 -0
- package/dist/api/multiscope.d.ts.map +1 -1
- package/dist/api/multiscope.js +13 -0
- package/dist/api/multiscope.js.map +1 -1
- package/dist/api/needs.d.ts +6 -0
- package/dist/api/needs.d.ts.map +1 -1
- package/dist/api/needs.js +31 -4
- package/dist/api/needs.js.map +1 -1
- package/dist/api/product.d.ts.map +1 -1
- package/dist/api/product.js +13 -2
- package/dist/api/product.js.map +1 -1
- package/dist/api/project-aggregates.d.ts +6 -6
- package/dist/api/project-aggregates.d.ts.map +1 -1
- package/dist/api/project-aggregates.js +16 -24
- package/dist/api/project-aggregates.js.map +1 -1
- package/dist/api/requirements.d.ts +261 -6
- package/dist/api/requirements.d.ts.map +1 -1
- package/dist/api/requirements.js +344 -64
- package/dist/api/requirements.js.map +1 -1
- package/dist/api/routes.d.ts +156 -4
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +851 -78
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-brief.d.ts +78 -0
- package/dist/api/run-brief.d.ts.map +1 -0
- package/dist/api/run-brief.js +318 -0
- package/dist/api/run-brief.js.map +1 -0
- package/dist/api/run-files.d.ts.map +1 -1
- package/dist/api/run-files.js +5 -1
- package/dist/api/run-files.js.map +1 -1
- package/dist/api/run-timing-index.d.ts +27 -0
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +65 -0
- package/dist/api/run-timing-index.js.map +1 -1
- package/dist/api/seat-images.d.ts +102 -0
- package/dist/api/seat-images.d.ts.map +1 -0
- package/dist/api/seat-images.js +333 -0
- package/dist/api/seat-images.js.map +1 -0
- package/dist/api/server.d.ts +3 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +265 -2
- package/dist/api/server.js.map +1 -1
- package/dist/api/steering-landing.d.ts +48 -1
- package/dist/api/steering-landing.d.ts.map +1 -1
- package/dist/api/steering-landing.js +116 -42
- package/dist/api/steering-landing.js.map +1 -1
- package/dist/api/system-snapshot.d.ts +51 -2
- package/dist/api/system-snapshot.d.ts.map +1 -1
- package/dist/api/system-snapshot.js +151 -15
- package/dist/api/system-snapshot.js.map +1 -1
- package/dist/api/testing.d.ts +4 -4
- package/dist/api/testing.js +2 -2
- package/dist/api/testing.js.map +1 -1
- package/dist/apps/spec.d.ts +3009 -0
- package/dist/apps/spec.d.ts.map +1 -0
- package/dist/apps/spec.js +870 -0
- package/dist/apps/spec.js.map +1 -0
- package/dist/campaigns/routes.js +1 -1
- package/dist/campaigns/routes.js.map +1 -1
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +12 -0
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +36 -1
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/deliver-text.d.ts.map +1 -1
- package/dist/core/deliver-text.js +22 -10
- package/dist/core/deliver-text.js.map +1 -1
- package/dist/core/estate-mcp-client.d.ts +7 -1
- package/dist/core/estate-mcp-client.d.ts.map +1 -1
- package/dist/core/estate-mcp-client.js +10 -2
- package/dist/core/estate-mcp-client.js.map +1 -1
- package/dist/core/exec.d.ts +12 -0
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +23 -0
- package/dist/core/exec.js.map +1 -1
- package/dist/core/reassign-refusal.d.ts.map +1 -1
- package/dist/core/reassign-refusal.js +23 -3
- package/dist/core/reassign-refusal.js.map +1 -1
- package/dist/core/repoPaths.d.ts +32 -7
- package/dist/core/repoPaths.d.ts.map +1 -1
- package/dist/core/repoPaths.js +56 -9
- package/dist/core/repoPaths.js.map +1 -1
- package/dist/core/requirements-graph-setting.d.ts +32 -0
- package/dist/core/requirements-graph-setting.d.ts.map +1 -0
- package/dist/core/requirements-graph-setting.js +84 -0
- package/dist/core/requirements-graph-setting.js.map +1 -0
- package/dist/core/run-boot-resume.d.ts +4 -1
- package/dist/core/run-boot-resume.d.ts.map +1 -1
- package/dist/core/run-boot-resume.js +6 -1
- package/dist/core/run-boot-resume.js.map +1 -1
- package/dist/core/run-identity.d.ts.map +1 -1
- package/dist/core/run-identity.js +6 -0
- package/dist/core/run-identity.js.map +1 -1
- package/dist/core/types.d.ts +14 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/decisions/chat-recorder.d.ts +14 -3
- package/dist/decisions/chat-recorder.d.ts.map +1 -1
- package/dist/decisions/chat-recorder.js +54 -9
- package/dist/decisions/chat-recorder.js.map +1 -1
- package/dist/editors/csp.d.ts +24 -4
- package/dist/editors/csp.d.ts.map +1 -1
- package/dist/editors/csp.js +35 -8
- package/dist/editors/csp.js.map +1 -1
- package/dist/editors/registry.d.ts +46 -21
- package/dist/editors/registry.d.ts.map +1 -1
- package/dist/editors/registry.js +13 -2
- package/dist/editors/registry.js.map +1 -1
- package/dist/editors/routes.d.ts +4 -1
- package/dist/editors/routes.d.ts.map +1 -1
- package/dist/editors/routes.js +30 -3
- package/dist/editors/routes.js.map +1 -1
- package/dist/editors/visuals.d.ts +51 -0
- package/dist/editors/visuals.d.ts.map +1 -0
- package/dist/editors/visuals.js +164 -0
- package/dist/editors/visuals.js.map +1 -0
- package/dist/editors/webrtc-guard.d.ts +94 -0
- package/dist/editors/webrtc-guard.d.ts.map +1 -0
- package/dist/editors/webrtc-guard.js +506 -0
- package/dist/editors/webrtc-guard.js.map +1 -0
- package/dist/inspect/reading.d.ts +110 -0
- package/dist/inspect/reading.d.ts.map +1 -0
- package/dist/inspect/reading.js +325 -0
- package/dist/inspect/reading.js.map +1 -0
- package/dist/inspect/routes.d.ts +14 -0
- package/dist/inspect/routes.d.ts.map +1 -0
- package/dist/inspect/routes.js +44 -0
- package/dist/inspect/routes.js.map +1 -0
- package/dist/inspect/service.d.ts +161 -0
- package/dist/inspect/service.d.ts.map +1 -0
- package/dist/inspect/service.js +466 -0
- package/dist/inspect/service.js.map +1 -0
- package/dist/interactive/bridge-pool.d.ts +11 -2
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +10 -1
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/doc-binding.d.ts +156 -0
- package/dist/interactive/doc-binding.d.ts.map +1 -0
- package/dist/interactive/doc-binding.js +277 -0
- package/dist/interactive/doc-binding.js.map +1 -0
- package/dist/interactive/doc-delete-routes.d.ts +3 -0
- package/dist/interactive/doc-delete-routes.d.ts.map +1 -1
- package/dist/interactive/doc-delete-routes.js +4 -0
- package/dist/interactive/doc-delete-routes.js.map +1 -1
- package/dist/interactive/draft-events.d.ts +89 -3
- package/dist/interactive/draft-events.d.ts.map +1 -1
- package/dist/interactive/draft-events.js +441 -30
- package/dist/interactive/draft-events.js.map +1 -1
- package/dist/interactive/draft-skill.d.ts +7 -0
- package/dist/interactive/draft-skill.d.ts.map +1 -1
- package/dist/interactive/draft-skill.js +10 -3
- package/dist/interactive/draft-skill.js.map +1 -1
- package/dist/interactive/edit-events.d.ts +2 -0
- package/dist/interactive/edit-events.d.ts.map +1 -1
- package/dist/interactive/edit-events.js +11 -0
- package/dist/interactive/edit-events.js.map +1 -1
- package/dist/interactive/proposal-create.d.ts +143 -0
- package/dist/interactive/proposal-create.d.ts.map +1 -0
- package/dist/interactive/proposal-create.js +318 -0
- package/dist/interactive/proposal-create.js.map +1 -0
- package/dist/interactive/proxy-routes.d.ts +60 -3
- package/dist/interactive/proxy-routes.d.ts.map +1 -1
- package/dist/interactive/proxy-routes.js +217 -3
- package/dist/interactive/proxy-routes.js.map +1 -1
- package/dist/interactive/source-packet.d.ts +126 -0
- package/dist/interactive/source-packet.d.ts.map +1 -0
- package/dist/interactive/source-packet.js +482 -0
- package/dist/interactive/source-packet.js.map +1 -0
- package/dist/learnings/estate.d.ts +16 -0
- package/dist/learnings/estate.d.ts.map +1 -0
- package/dist/learnings/estate.js +68 -0
- package/dist/learnings/estate.js.map +1 -0
- package/dist/learnings/extract.d.ts +56 -0
- package/dist/learnings/extract.d.ts.map +1 -0
- package/dist/learnings/extract.js +252 -0
- package/dist/learnings/extract.js.map +1 -0
- package/dist/learnings/recall.d.ts +43 -0
- package/dist/learnings/recall.d.ts.map +1 -0
- package/dist/learnings/recall.js +104 -0
- package/dist/learnings/recall.js.map +1 -0
- package/dist/learnings/service.d.ts +183 -0
- package/dist/learnings/service.d.ts.map +1 -0
- package/dist/learnings/service.js +571 -0
- package/dist/learnings/service.js.map +1 -0
- package/dist/mcp/ask-server.d.ts.map +1 -1
- package/dist/mcp/ask-server.js +37 -4
- package/dist/mcp/ask-server.js.map +1 -1
- package/dist/mcp/broker.d.ts +12 -1
- package/dist/mcp/broker.d.ts.map +1 -1
- package/dist/mcp/broker.js +24 -5
- package/dist/mcp/broker.js.map +1 -1
- package/dist/mcp/invoke.d.ts +26 -2
- package/dist/mcp/invoke.d.ts.map +1 -1
- package/dist/mcp/invoke.js +51 -5
- package/dist/mcp/invoke.js.map +1 -1
- package/dist/persona/routes.d.ts +92 -0
- package/dist/persona/routes.d.ts.map +1 -0
- package/dist/persona/routes.js +69 -0
- package/dist/persona/routes.js.map +1 -0
- package/dist/persona/store.d.ts +104 -0
- package/dist/persona/store.d.ts.map +1 -0
- package/dist/persona/store.js +176 -0
- package/dist/persona/store.js.map +1 -0
- package/dist/persona/voice.d.ts +4 -0
- package/dist/persona/voice.d.ts.map +1 -0
- package/dist/persona/voice.js +58 -0
- package/dist/persona/voice.js.map +1 -0
- package/dist/projects/routes.d.ts +2 -2
- package/dist/setup/known.d.ts +56 -0
- package/dist/setup/known.d.ts.map +1 -0
- package/dist/setup/known.js +159 -0
- package/dist/setup/known.js.map +1 -0
- package/dist/setup/routes.d.ts +13 -0
- package/dist/setup/routes.d.ts.map +1 -0
- package/dist/setup/routes.js +20 -0
- package/dist/setup/routes.js.map +1 -0
- package/dist/standing-orders/history.d.ts +2 -0
- package/dist/standing-orders/history.d.ts.map +1 -1
- package/dist/standing-orders/history.js +1 -0
- package/dist/standing-orders/history.js.map +1 -1
- package/dist/studio/assets/WickedSans-Regular-fb698rcD.woff2 +0 -0
- package/dist/studio/assets/WickedSans-SemiBold-CD53n1AC.woff2 +0 -0
- package/dist/studio/assets/WickedScript-Regular-CY5juO6I.woff2 +0 -0
- package/dist/studio/assets/WickedSerif-Regular-mdPEjaVZ.woff2 +0 -0
- package/dist/studio/assets/index-BUZ_-Syk.css +32 -0
- package/dist/studio/assets/index-u4O_7N-b.js +986 -0
- package/dist/studio/editors/wicked-deck/editor.json +6 -1
- package/dist/studio/editors/wicked-deck/icon.svg +1 -0
- package/dist/studio/editors/wicked-deck/index.html +1 -1
- package/dist/studio/editors/wicked-doc/editor.json +6 -1
- package/dist/studio/editors/wicked-doc/icon.svg +1 -0
- package/dist/studio/editors/wicked-doc/index.html +1 -1
- package/dist/studio/editors/wicked-insights/editor.json +6 -1
- package/dist/studio/editors/wicked-insights/icon.svg +1 -0
- package/dist/studio/editors/wicked-insights/index.html +1 -1
- package/dist/studio/editors/wicked-page/editor.json +6 -1
- package/dist/studio/editors/wicked-page/icon.svg +1 -0
- package/dist/studio/editors/wicked-page/index.html +1 -1
- package/dist/studio/editors/wicked-video/editor.json +6 -1
- package/dist/studio/editors/wicked-video/icon.svg +1 -0
- package/dist/studio/editors/wicked-video/index.html +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/studio/testid-inventory.json +5155 -2707
- package/dist/voice/dashboard.d.ts +376 -0
- package/dist/voice/dashboard.d.ts.map +1 -0
- package/dist/voice/dashboard.js +92 -0
- package/dist/voice/dashboard.js.map +1 -0
- package/dist/voice/inject-input.d.ts +51 -0
- package/dist/voice/inject-input.d.ts.map +1 -0
- package/dist/voice/inject-input.js +126 -0
- package/dist/voice/inject-input.js.map +1 -0
- package/dist/voice/routes.d.ts +41 -0
- package/dist/voice/routes.d.ts.map +1 -0
- package/dist/voice/routes.js +116 -0
- package/dist/voice/routes.js.map +1 -0
- package/dist/voice/service.d.ts +177 -0
- package/dist/voice/service.d.ts.map +1 -0
- package/dist/voice/service.js +400 -0
- package/dist/voice/service.js.map +1 -0
- package/dist/workflow-catalog/build.d.ts +35 -0
- package/dist/workflow-catalog/build.d.ts.map +1 -0
- package/dist/workflow-catalog/build.js +229 -0
- package/dist/workflow-catalog/build.js.map +1 -0
- package/dist/workflow-catalog/catalog-data.d.ts +36 -0
- package/dist/workflow-catalog/catalog-data.d.ts.map +1 -0
- package/dist/workflow-catalog/catalog-data.js +430 -0
- package/dist/workflow-catalog/catalog-data.js.map +1 -0
- package/dist/working-doc/event-lines.d.ts +76 -0
- package/dist/working-doc/event-lines.d.ts.map +1 -0
- package/dist/working-doc/event-lines.js +247 -0
- package/dist/working-doc/event-lines.js.map +1 -0
- package/dist/working-doc/routes.d.ts +1 -1
- package/dist/working-doc/routes.d.ts.map +1 -1
- package/dist/working-doc/routes.js +2 -1
- package/dist/working-doc/routes.js.map +1 -1
- package/dist/working-doc/sections.d.ts +3 -1
- package/dist/working-doc/sections.d.ts.map +1 -1
- package/dist/working-doc/sections.js +4 -2
- package/dist/working-doc/sections.js.map +1 -1
- package/dist/working-doc/service.d.ts +66 -1
- package/dist/working-doc/service.d.ts.map +1 -1
- package/dist/working-doc/service.js +298 -22
- package/dist/working-doc/service.js.map +1 -1
- package/dist/working-doc/store.d.ts +8 -2
- package/dist/working-doc/store.d.ts.map +1 -1
- package/dist/working-doc/store.js.map +1 -1
- package/endpoint-manifest.json +205 -2
- package/package.json +5 -4
- package/workflows/distill-learnings.json +27 -0
- package/workflows/inspect-unit.json +27 -0
- package/dist/studio/assets/index-B-f_VEL2.css +0 -32
- package/dist/studio/assets/index-DhkxIK-0.js +0 -845
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run learnings, part 2: from a run's record to the approve queue (the operator's 2026-10-30 ask).
|
|
3
|
+
*
|
|
4
|
+
* - At the run's CHECKPOINTS (a power checkpoint, a unit done, a gate decided) the template
|
|
5
|
+
* learnings found so far ({@link extractLearnings}: a flaky test, a check the sandbox could not
|
|
6
|
+
* start) are filed at once.
|
|
7
|
+
* - At the run's END the rest of the evidence (rulings, steers, decisions, review findings, base-red
|
|
8
|
+
* checks) goes to ONE cheap seat that did not build the run: a `distill-learnings` run, one seat,
|
|
9
|
+
* one turn, no repository. Crew files what it writes. When no such seat can run (none signed in,
|
|
10
|
+
* the launch refused, it wrote nothing usable), the evidence is filed raw, trimmed and capped.
|
|
11
|
+
* - The distil run is never a person's to answer (wicked-crew#1251 follow-up: a codex distil that
|
|
12
|
+
* rightly found nothing replied in under 200 characters, failed the engine's substance floor and
|
|
13
|
+
* sat in the operator's queue as "Waiting on you"). Its outcome is its report file, read here, so
|
|
14
|
+
* whatever gate it stops at (a short reply, a crashed seat), crew stops the run and files from
|
|
15
|
+
* the report: an empty one is recorded as "none found", a missing one files the evidence raw.
|
|
16
|
+
*
|
|
17
|
+
* Everything filed is a PROPOSAL of kind `memory` in estate's queue, attributed to the SOURCE run
|
|
18
|
+
* (`provenance.run_id`), faceted by repo, project and seat. Nothing is written without a person's
|
|
19
|
+
* approval. The same evidence is never proposed twice: a candidate whose text is already in the queue
|
|
20
|
+
* (pending or approved) or in the memory store is skipped, whichever run filed it.
|
|
21
|
+
*
|
|
22
|
+
* Never throws into the event pump: every failure is logged and the run is left as it was.
|
|
23
|
+
*/
|
|
24
|
+
import type { SessionView } from 'wicked-crew-api-types';
|
|
25
|
+
import type { LaunchRunInput, WorkflowDef } from '../core/types.js';
|
|
26
|
+
import type { LooseEvent } from '../insights/run-facts.js';
|
|
27
|
+
import { type LearningKind } from './extract.js';
|
|
28
|
+
export declare const DISTILL_WORKFLOW = "distill-learnings";
|
|
29
|
+
export declare const DISTILL_WORKFLOW_FILE: string;
|
|
30
|
+
export declare const HANDOFF_FILE = "handoff.json";
|
|
31
|
+
export declare const OUT_DIR = "out";
|
|
32
|
+
export declare const REPORT_FILE = "report.json";
|
|
33
|
+
/** Written once a source run's learnings were filed at its end: a resume's second terminal frame files nothing. */
|
|
34
|
+
export declare const FILED_FILE = "filed.json";
|
|
35
|
+
/** The distil run launched for a source run (its id and seat). */
|
|
36
|
+
export declare const DISTILL_FILE = "distill.json";
|
|
37
|
+
/** The agent named on a learning crew worded itself (a template, or raw evidence). */
|
|
38
|
+
export declare const CREW_AGENT = "crew";
|
|
39
|
+
/** The most learnings one run proposes from its end (the distil seat's, or the raw fallback). */
|
|
40
|
+
export declare const MAX_END_LEARNINGS = 5;
|
|
41
|
+
/** The shortest learning worth a person's time (estate refuses shorter bodies too). */
|
|
42
|
+
export declare const MIN_LEARNING_CHARS = 40;
|
|
43
|
+
export declare const MAX_LEARNING_CHARS = 1500;
|
|
44
|
+
/** Runs whose own record is not a source of learnings: they capture, review or set up. */
|
|
45
|
+
export declare const NO_LEARNINGS_WORKFLOWS: ReadonlySet<string>;
|
|
46
|
+
export type RunLearningsMode = 'off' | 'extract' | 'distill';
|
|
47
|
+
/** `WICKED_CREW_RUN_LEARNINGS`: `off`, `extract` (no distil seat), `distill` (the default). A test process
|
|
48
|
+
* (vitest, NODE_ENV=test) defaults to `off`, so a headless server never spawns estate on a stub run's frames. */
|
|
49
|
+
export declare function runLearningsMode(env?: NodeJS.ProcessEnv): RunLearningsMode;
|
|
50
|
+
/** Where each source run's distil handoff lives: outside the daemon state home (the worker fence), like reviews. */
|
|
51
|
+
export declare function defaultLearningsDir(env?: NodeJS.ProcessEnv): string;
|
|
52
|
+
export declare function loadDistillWorkflow(file?: string): WorkflowDef;
|
|
53
|
+
/** One row of estate's `proposal.list`, read loosely. */
|
|
54
|
+
export interface ProposalRow {
|
|
55
|
+
id: string;
|
|
56
|
+
kind_type: string;
|
|
57
|
+
state: string;
|
|
58
|
+
created_at?: number;
|
|
59
|
+
payload: Record<string, unknown>;
|
|
60
|
+
facets: Record<string, unknown>;
|
|
61
|
+
provenance: Record<string, unknown>;
|
|
62
|
+
}
|
|
63
|
+
/** What `GET /runs/:id/learnings` answers. */
|
|
64
|
+
export interface RunLearningsView {
|
|
65
|
+
runId: string;
|
|
66
|
+
proposed: number;
|
|
67
|
+
pending: number;
|
|
68
|
+
approved: number;
|
|
69
|
+
rejected: number;
|
|
70
|
+
/** A distil seat is still reading this run's evidence. */
|
|
71
|
+
distilling: boolean;
|
|
72
|
+
items: Array<{
|
|
73
|
+
id: string;
|
|
74
|
+
state: string;
|
|
75
|
+
capture: string | null;
|
|
76
|
+
content: string;
|
|
77
|
+
agent: string | null;
|
|
78
|
+
createdAt: number | null;
|
|
79
|
+
}>;
|
|
80
|
+
}
|
|
81
|
+
export interface SubmitArgs {
|
|
82
|
+
kind_type: 'memory';
|
|
83
|
+
payload: Record<string, unknown>;
|
|
84
|
+
facets: Record<string, string>;
|
|
85
|
+
}
|
|
86
|
+
export interface RunLearningsDeps {
|
|
87
|
+
adapter: {
|
|
88
|
+
sessionsDetail(): Promise<SessionView[]>;
|
|
89
|
+
runEvents(runId: string): Promise<LooseEvent[] | null>;
|
|
90
|
+
seatsForWorkflow(workflowId: string): Promise<unknown[]>;
|
|
91
|
+
launchRun(input: LaunchRunInput): Promise<string>;
|
|
92
|
+
/** Stop a run (a distil run that parked at a gate: its outcome is read from its report, never asked of a person). */
|
|
93
|
+
cancelRun(runId: string): Promise<unknown>;
|
|
94
|
+
};
|
|
95
|
+
/** File one proposal attributed to `runId` (its provenance), as `agent`. Returns the proposal id. */
|
|
96
|
+
submit(runId: string, agent: string, args: SubmitArgs): Promise<string | null>;
|
|
97
|
+
/** Every proposal in the queue, any state. */
|
|
98
|
+
listProposals(): Promise<ProposalRow[]>;
|
|
99
|
+
/** The text of every memory in the store (the dedupe set). */
|
|
100
|
+
listMemoryContents(): Promise<string[]>;
|
|
101
|
+
/** The launch bookkeeping a chained run gets (launch entry, project filing, `runChained` frame). */
|
|
102
|
+
launched?(distillRunId: string, sourceRunId: string, projectId: string | null): void;
|
|
103
|
+
learningsDir: string;
|
|
104
|
+
mode: RunLearningsMode;
|
|
105
|
+
log: (msg: string) => void;
|
|
106
|
+
newRunId: () => string;
|
|
107
|
+
}
|
|
108
|
+
/** The proposals one run filed (provenance), as the run's end card and the queue's filter read them. */
|
|
109
|
+
export declare function learningsOfRun(runId: string, rows: readonly ProposalRow[]): RunLearningsView['items'];
|
|
110
|
+
/** How many distinct evidence items the distil seat accounted for (`checked[]`, kept or dropped with a reason). */
|
|
111
|
+
export declare function checkedCount(raw: unknown, evidenceIds?: ReadonlySet<string>): number;
|
|
112
|
+
/**
|
|
113
|
+
* A distil report's learnings, validated: known kind, sane length, at most {@link MAX_END_LEARNINGS}. `null` when
|
|
114
|
+
* there is no usable report: none, malformed, or entries none of which survive validation. An explicitly EMPTY list is
|
|
115
|
+
* the seat's judgment (nothing durable) and is kept as `[]`.
|
|
116
|
+
*/
|
|
117
|
+
export declare function parseDistillReport(raw: unknown): Array<{
|
|
118
|
+
kind: LearningKind;
|
|
119
|
+
content: string;
|
|
120
|
+
}> | null;
|
|
121
|
+
export declare class RunLearningsService {
|
|
122
|
+
private readonly deps;
|
|
123
|
+
/**
|
|
124
|
+
* Every sweep and reconcile runs on ONE daemon-wide queue: the dedupe read and the submits that follow it are
|
|
125
|
+
* atomic across runs (two runs that hit the same flaky test propose it once), and a run's end, its distil report
|
|
126
|
+
* and a resume's second terminal frame never interleave. A task already queued and not yet started is not queued
|
|
127
|
+
* twice.
|
|
128
|
+
*/
|
|
129
|
+
private tail;
|
|
130
|
+
private readonly queued;
|
|
131
|
+
/** distil run id → its source run (rebuilt from disk after a restart). */
|
|
132
|
+
private readonly distills;
|
|
133
|
+
private distillsLoaded;
|
|
134
|
+
constructor(deps: RunLearningsDeps);
|
|
135
|
+
private dirOf;
|
|
136
|
+
private enqueue;
|
|
137
|
+
/** Fold one engine frame. Never throws. */
|
|
138
|
+
onEvent(event: {
|
|
139
|
+
type: string;
|
|
140
|
+
session?: unknown;
|
|
141
|
+
}): void;
|
|
142
|
+
/** Read the run's record and file what is new (a test's direct entry; frames go through {@link onEvent}). */
|
|
143
|
+
sweep(runId: string, phase: 'checkpoint' | 'end'): Promise<void>;
|
|
144
|
+
private onEnd;
|
|
145
|
+
/**
|
|
146
|
+
* After a restart: finish every run whose end was interrupted. A handoff with no distil run (the daemon stopped
|
|
147
|
+
* before the launch) is ended again; a distil run that ended while the daemon was down is reconciled; one the
|
|
148
|
+
* daemon no longer knows is filed raw. Never throws.
|
|
149
|
+
*/
|
|
150
|
+
recover(): Promise<void>;
|
|
151
|
+
private viewOf;
|
|
152
|
+
private sweepOnce;
|
|
153
|
+
/** The distil run recorded for a source run, if one was launched. */
|
|
154
|
+
private distillOf;
|
|
155
|
+
/** The normalized text of every proposal in the queue (a person's rejection is not proposed again) and every stored memory. */
|
|
156
|
+
private knownTexts;
|
|
157
|
+
private file;
|
|
158
|
+
/** No distil seat: the evidence as it is, trimmed and capped, for a person to edit or reject. */
|
|
159
|
+
/** `failedBefore`: submits of this end that already failed. The run is marked filed only when none did, so a
|
|
160
|
+
* failed submit is retried on the next recovery (the dedupe keeps what landed from landing twice). */
|
|
161
|
+
private fileRaw;
|
|
162
|
+
private markFiled;
|
|
163
|
+
/** A seat that did not build this run, signed in and eligible; `null` when there is none. */
|
|
164
|
+
private distillSeat;
|
|
165
|
+
/** Launch the distil run. `null` when it could not be launched (the caller files the evidence raw). */
|
|
166
|
+
private launchDistill;
|
|
167
|
+
/** After a restart: which distil run belongs to which source run, from the handoff directories. */
|
|
168
|
+
private loadDistills;
|
|
169
|
+
/** The evidence ids the distil seat was handed (`e1`…), as crew wrote them. */
|
|
170
|
+
private handoffEvidenceIds;
|
|
171
|
+
private readJson;
|
|
172
|
+
/**
|
|
173
|
+
* A distil run stopped at a gate. It is never a person's to answer: crew stops it and files from its report (the
|
|
174
|
+
* seat's judgment, even when it is "none found"), or files the evidence raw when the seat wrote nothing usable.
|
|
175
|
+
* Only a live frame does this; a distil already parked when the daemon starts is left as it is.
|
|
176
|
+
*/
|
|
177
|
+
private stopParkedDistill;
|
|
178
|
+
/** A distil run ended: file what it wrote under the source run, or the raw evidence when it wrote nothing usable. */
|
|
179
|
+
reconcileDistill(distillRunId: string, sourceRunId: string): Promise<void>;
|
|
180
|
+
/** The run's end card: what it proposed, and whether a distil seat is still at it. */
|
|
181
|
+
view(runId: string): Promise<RunLearningsView>;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/learnings/service.ts"],"names":[],"mappings":"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"}
|