@mono-agent/agent-app 0.19.1 → 0.20.1
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 +307 -32
- package/dist/acp-bridge.d.ts.map +1 -1
- package/dist/acp-bridge.js +113 -54
- package/dist/acp-bridge.js.map +1 -1
- package/dist/acp-session-store.d.ts +12 -0
- package/dist/acp-session-store.d.ts.map +1 -0
- package/dist/acp-session-store.js +74 -0
- package/dist/acp-session-store.js.map +1 -0
- package/dist/agent-artifact-paths.d.ts +8 -0
- package/dist/agent-artifact-paths.d.ts.map +1 -0
- package/dist/agent-artifact-paths.js +11 -0
- package/dist/agent-artifact-paths.js.map +1 -0
- package/dist/agent-root-coordinator.d.ts +101 -0
- package/dist/agent-root-coordinator.d.ts.map +1 -0
- package/dist/agent-root-coordinator.js +470 -0
- package/dist/agent-root-coordinator.js.map +1 -0
- package/dist/app-controller-channels.d.ts +13 -1
- package/dist/app-controller-channels.d.ts.map +1 -1
- package/dist/app-controller-channels.js +152 -20
- package/dist/app-controller-channels.js.map +1 -1
- package/dist/app-controller-continuation.d.ts +2 -0
- package/dist/app-controller-continuation.d.ts.map +1 -1
- package/dist/app-controller-continuation.js.map +1 -1
- package/dist/app-controller-lifecycle.d.ts +5 -0
- package/dist/app-controller-lifecycle.d.ts.map +1 -1
- package/dist/app-controller-lifecycle.js +24 -5
- package/dist/app-controller-lifecycle.js.map +1 -1
- package/dist/app-controller-maintenance.d.ts +4 -0
- package/dist/app-controller-maintenance.d.ts.map +1 -1
- package/dist/app-controller-maintenance.js +34 -2
- package/dist/app-controller-maintenance.js.map +1 -1
- package/dist/app-controller-memory.d.ts +2 -0
- package/dist/app-controller-memory.d.ts.map +1 -1
- package/dist/app-controller-memory.js +6 -3
- package/dist/app-controller-memory.js.map +1 -1
- package/dist/app-controller-process-jobs.d.ts +49 -0
- package/dist/app-controller-process-jobs.d.ts.map +1 -0
- package/dist/app-controller-process-jobs.js +294 -0
- package/dist/app-controller-process-jobs.js.map +1 -0
- package/dist/app-controller-responder.d.ts +17 -0
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +164 -13
- package/dist/app-controller-responder.js.map +1 -1
- package/dist/app-controller-traceability.d.ts +8 -0
- package/dist/app-controller-traceability.d.ts.map +1 -1
- package/dist/app-controller-traceability.js +22 -1
- package/dist/app-controller-traceability.js.map +1 -1
- package/dist/app-controller-types.d.ts +1 -1
- package/dist/app-controller-types.d.ts.map +1 -1
- package/dist/app-controller-utils.d.ts +8 -0
- package/dist/app-controller-utils.d.ts.map +1 -1
- package/dist/app-controller-utils.js +24 -1
- package/dist/app-controller-utils.js.map +1 -1
- package/dist/app-controller.d.ts +45 -1
- package/dist/app-controller.d.ts.map +1 -1
- package/dist/app-controller.js +135 -39
- package/dist/app-controller.js.map +1 -1
- package/dist/background-log-maintenance.d.ts +85 -2
- package/dist/background-log-maintenance.d.ts.map +1 -1
- package/dist/background-log-maintenance.js +407 -136
- package/dist/background-log-maintenance.js.map +1 -1
- package/dist/background-runtime.d.ts.map +1 -1
- package/dist/background-runtime.js +22 -41
- package/dist/background-runtime.js.map +1 -1
- package/dist/background.d.ts +18 -26
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +105 -138
- package/dist/background.js.map +1 -1
- package/dist/channel-drivers/cron.d.ts +12 -1
- package/dist/channel-drivers/cron.d.ts.map +1 -1
- package/dist/channel-drivers/cron.js +121 -18
- package/dist/channel-drivers/cron.js.map +1 -1
- package/dist/channel-drivers/native-notify.d.ts +3 -0
- package/dist/channel-drivers/native-notify.d.ts.map +1 -1
- package/dist/channel-drivers/native-notify.js +2 -1
- package/dist/channel-drivers/native-notify.js.map +1 -1
- package/dist/channel-drivers/slack.d.ts.map +1 -1
- package/dist/channel-drivers/slack.js +41 -4
- package/dist/channel-drivers/slack.js.map +1 -1
- package/dist/channel-drivers/telegram.d.ts.map +1 -1
- package/dist/channel-drivers/telegram.js +46 -3
- package/dist/channel-drivers/telegram.js.map +1 -1
- package/dist/channel-drivers/tui.d.ts +13 -2
- package/dist/channel-drivers/tui.d.ts.map +1 -1
- package/dist/channel-drivers/tui.js +112 -3
- package/dist/channel-drivers/tui.js.map +1 -1
- package/dist/channels.d.ts +1 -1
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +4 -2
- package/dist/channels.js.map +1 -1
- package/dist/cli-args.d.ts +15 -1
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +82 -12
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-background-command.d.ts +9 -2
- package/dist/cli-background-command.d.ts.map +1 -1
- package/dist/cli-background-command.js +179 -66
- package/dist/cli-background-command.js.map +1 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +50 -12
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +21 -1
- package/dist/cli-help.js.map +1 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +105 -2
- package/dist/config-reference.js.map +1 -1
- package/dist/configured-agent.d.ts +64 -21
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +840 -156
- package/dist/configured-agent.js.map +1 -1
- package/dist/conversation-state-roots.d.ts +59 -0
- package/dist/conversation-state-roots.d.ts.map +1 -0
- package/dist/conversation-state-roots.js +248 -0
- package/dist/conversation-state-roots.js.map +1 -0
- package/dist/cron-control-store.d.ts +91 -0
- package/dist/cron-control-store.d.ts.map +1 -0
- package/dist/cron-control-store.js +1251 -0
- package/dist/cron-control-store.js.map +1 -0
- package/dist/cron-operator-service.d.ts +54 -0
- package/dist/cron-operator-service.d.ts.map +1 -0
- package/dist/cron-operator-service.js +352 -0
- package/dist/cron-operator-service.js.map +1 -0
- package/dist/doctor-session-history.d.ts +9 -0
- package/dist/doctor-session-history.d.ts.map +1 -0
- package/dist/doctor-session-history.js +313 -0
- package/dist/doctor-session-history.js.map +1 -0
- package/dist/doctor.d.ts +2 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +356 -9
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interaction-bridge.d.ts +1 -0
- package/dist/interaction-bridge.d.ts.map +1 -1
- package/dist/interaction-bridge.js +54 -6
- package/dist/interaction-bridge.js.map +1 -1
- package/dist/jobs-command.d.ts +17 -0
- package/dist/jobs-command.d.ts.map +1 -0
- package/dist/jobs-command.js +207 -0
- package/dist/jobs-command.js.map +1 -0
- package/dist/launchd-lifecycle-lock.d.ts +36 -0
- package/dist/launchd-lifecycle-lock.d.ts.map +1 -0
- package/dist/launchd-lifecycle-lock.js +124 -0
- package/dist/launchd-lifecycle-lock.js.map +1 -0
- package/dist/launchd-log-monitor-status.d.ts +7 -0
- package/dist/launchd-log-monitor-status.d.ts.map +1 -0
- package/dist/launchd-log-monitor-status.js +224 -0
- package/dist/launchd-log-monitor-status.js.map +1 -0
- package/dist/launchd-logs.d.ts +9 -1
- package/dist/launchd-logs.d.ts.map +1 -1
- package/dist/launchd-logs.js +69 -16
- package/dist/launchd-logs.js.map +1 -1
- package/dist/launchd-maintenance-command.d.ts +10 -0
- package/dist/launchd-maintenance-command.d.ts.map +1 -0
- package/dist/launchd-maintenance-command.js +2 -0
- package/dist/launchd-maintenance-command.js.map +1 -0
- package/dist/launchd-maintenance-entry.d.ts +30 -0
- package/dist/launchd-maintenance-entry.d.ts.map +1 -0
- package/dist/launchd-maintenance-entry.js +206 -0
- package/dist/launchd-maintenance-entry.js.map +1 -0
- package/dist/launchd-maintenance-gate.d.ts +28 -0
- package/dist/launchd-maintenance-gate.d.ts.map +1 -0
- package/dist/launchd-maintenance-gate.js +80 -0
- package/dist/launchd-maintenance-gate.js.map +1 -0
- package/dist/launchd-private-files.d.ts +3 -0
- package/dist/launchd-private-files.d.ts.map +1 -0
- package/dist/launchd-private-files.js +58 -0
- package/dist/launchd-private-files.js.map +1 -0
- package/dist/launchd.d.ts +56 -2
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +210 -5
- package/dist/launchd.js.map +1 -1
- package/dist/local-configuration.d.ts.map +1 -1
- package/dist/local-configuration.js +34 -7
- package/dist/local-configuration.js.map +1 -1
- package/dist/managed-launchd-maintenance-environment.d.ts +3 -0
- package/dist/managed-launchd-maintenance-environment.d.ts.map +1 -0
- package/dist/managed-launchd-maintenance-environment.js +12 -0
- package/dist/managed-launchd-maintenance-environment.js.map +1 -0
- package/dist/managed-runtime-launch-proof.d.ts +11 -0
- package/dist/managed-runtime-launch-proof.d.ts.map +1 -0
- package/dist/managed-runtime-launch-proof.js +59 -0
- package/dist/managed-runtime-launch-proof.js.map +1 -0
- package/dist/managed-runtime-maintenance-entry.d.ts +10 -0
- package/dist/managed-runtime-maintenance-entry.d.ts.map +1 -0
- package/dist/managed-runtime-maintenance-entry.js +244 -0
- package/dist/managed-runtime-maintenance-entry.js.map +1 -0
- package/dist/managed-web-logs.d.ts +29 -11
- package/dist/managed-web-logs.d.ts.map +1 -1
- package/dist/managed-web-logs.js +244 -121
- package/dist/managed-web-logs.js.map +1 -1
- package/dist/managed-web-maintenance-environment.d.ts +6 -0
- package/dist/managed-web-maintenance-environment.d.ts.map +1 -0
- package/dist/managed-web-maintenance-environment.js +19 -0
- package/dist/managed-web-maintenance-environment.js.map +1 -0
- package/dist/mcp-apps.d.ts +37 -0
- package/dist/mcp-apps.d.ts.map +1 -0
- package/dist/mcp-apps.js +1753 -0
- package/dist/mcp-apps.js.map +1 -0
- package/dist/memory-command.d.ts +12 -0
- package/dist/memory-command.d.ts.map +1 -1
- package/dist/memory-command.js +510 -1
- package/dist/memory-command.js.map +1 -1
- package/dist/modules/known-tools.d.ts +1 -1
- package/dist/modules/known-tools.d.ts.map +1 -1
- package/dist/modules/known-tools.js +2 -0
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/posted-reply-history.d.ts.map +1 -1
- package/dist/posted-reply-history.js +12 -0
- package/dist/posted-reply-history.js.map +1 -1
- package/dist/proactive-notify.d.ts +4 -1
- package/dist/proactive-notify.d.ts.map +1 -1
- package/dist/proactive-notify.js +43 -5
- package/dist/proactive-notify.js.map +1 -1
- package/dist/process-jobs-config.d.ts +84 -0
- package/dist/process-jobs-config.d.ts.map +1 -0
- package/dist/process-jobs-config.js +427 -0
- package/dist/process-jobs-config.js.map +1 -0
- package/dist/process-jobs-context.d.ts +24 -0
- package/dist/process-jobs-context.d.ts.map +1 -0
- package/dist/process-jobs-context.js +135 -0
- package/dist/process-jobs-context.js.map +1 -0
- package/dist/process-jobs-protection.d.ts +33 -0
- package/dist/process-jobs-protection.d.ts.map +1 -0
- package/dist/process-jobs-protection.js +74 -0
- package/dist/process-jobs-protection.js.map +1 -0
- package/dist/process-jobs-root-registry.d.ts +115 -0
- package/dist/process-jobs-root-registry.d.ts.map +1 -0
- package/dist/process-jobs-root-registry.js +978 -0
- package/dist/process-jobs-root-registry.js.map +1 -0
- package/dist/process-jobs-runtime.d.ts +38 -0
- package/dist/process-jobs-runtime.d.ts.map +1 -0
- package/dist/process-jobs-runtime.js +178 -0
- package/dist/process-jobs-runtime.js.map +1 -0
- package/dist/process-jobs-service.d.ts +70 -0
- package/dist/process-jobs-service.d.ts.map +1 -0
- package/dist/process-jobs-service.js +1989 -0
- package/dist/process-jobs-service.js.map +1 -0
- package/dist/process-jobs-store.d.ts +151 -0
- package/dist/process-jobs-store.d.ts.map +1 -0
- package/dist/process-jobs-store.js +1290 -0
- package/dist/process-jobs-store.js.map +1 -0
- package/dist/reply-artifacts.d.ts +65 -0
- package/dist/reply-artifacts.d.ts.map +1 -0
- package/dist/reply-artifacts.js +1147 -0
- package/dist/reply-artifacts.js.map +1 -0
- package/dist/reply-part-budget.d.ts +16 -0
- package/dist/reply-part-budget.d.ts.map +1 -0
- package/dist/reply-part-budget.js +57 -0
- package/dist/reply-part-budget.js.map +1 -0
- package/dist/request-model-override.d.ts +19 -0
- package/dist/request-model-override.d.ts.map +1 -1
- package/dist/request-model-override.js +54 -1
- package/dist/request-model-override.js.map +1 -1
- package/dist/request-scoped-mcp.d.ts +31 -0
- package/dist/request-scoped-mcp.d.ts.map +1 -0
- package/dist/request-scoped-mcp.js +197 -0
- package/dist/request-scoped-mcp.js.map +1 -0
- package/dist/run-history.d.ts.map +1 -1
- package/dist/run-history.js +50 -254
- package/dist/run-history.js.map +1 -1
- package/dist/runtime-option-extensions.d.ts +23 -0
- package/dist/runtime-option-extensions.d.ts.map +1 -1
- package/dist/runtime-option-extensions.js +55 -0
- package/dist/runtime-option-extensions.js.map +1 -1
- package/dist/runtime-routes.d.ts +7 -1
- package/dist/runtime-routes.d.ts.map +1 -1
- package/dist/runtime-routes.js +25 -0
- package/dist/runtime-routes.js.map +1 -1
- package/dist/secure-file-replace.d.ts +3 -0
- package/dist/secure-file-replace.d.ts.map +1 -1
- package/dist/secure-file-replace.js +31 -7
- package/dist/secure-file-replace.js.map +1 -1
- package/dist/session-history.d.ts +146 -0
- package/dist/session-history.d.ts.map +1 -0
- package/dist/session-history.js +347 -0
- package/dist/session-history.js.map +1 -0
- package/dist/sessions.d.ts +45 -2
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +849 -30
- package/dist/sessions.js.map +1 -1
- package/dist/web-command.d.ts +12 -11
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +554 -80
- package/dist/web-command.js.map +1 -1
- package/dist/web-log-maintenance-command.d.ts +7 -0
- package/dist/web-log-maintenance-command.d.ts.map +1 -0
- package/dist/web-log-maintenance-command.js +21 -0
- package/dist/web-log-maintenance-command.js.map +1 -0
- package/dist/web-log-maintenance-status.d.ts +26 -0
- package/dist/web-log-maintenance-status.d.ts.map +1 -0
- package/dist/web-log-maintenance-status.js +171 -0
- package/dist/web-log-maintenance-status.js.map +1 -0
- package/dist/web-log-maintenance.d.ts +32 -0
- package/dist/web-log-maintenance.d.ts.map +1 -0
- package/dist/web-log-maintenance.js +163 -0
- package/dist/web-log-maintenance.js.map +1 -0
- package/dist/web-maintenance-paths.d.ts +12 -0
- package/dist/web-maintenance-paths.d.ts.map +1 -0
- package/dist/web-maintenance-paths.js +24 -0
- package/dist/web-maintenance-paths.js.map +1 -0
- package/dist/wizard/prompts.d.ts.map +1 -1
- package/dist/wizard/prompts.js +1 -0
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.js +1 -1
- package/dist/wizard/run.js.map +1 -1
- package/package.json +15 -15
- package/schema/mono-agent.config.schema.json +106 -1
- package/skills/mono-agent-composer/references/config-blueprint.md +27 -2
- package/skills/mono-agent-composer/references/discovery-questions.md +2 -2
- package/skills/mono-agent-composer/references/feature-coverage.md +6 -4
- package/skills/mono-agent-composer/references/package-map.md +19 -3
- package/skills/mono-agent-composer/references/playbooks.md +3 -3
- package/skills/mono-agent-composer/references/validation.md +4 -2
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AgentRequestBase, AgentResponder } from "@mono-agent/agent-contracts";
|
|
2
|
+
export interface ProcessJobWakeContext {
|
|
3
|
+
readonly jobId: string;
|
|
4
|
+
readonly chainDepth: number;
|
|
5
|
+
}
|
|
6
|
+
export type ProcessJobWakeContextResolution = {
|
|
7
|
+
readonly kind: "none";
|
|
8
|
+
} | {
|
|
9
|
+
readonly kind: "resolved";
|
|
10
|
+
readonly context: ProcessJobWakeContext;
|
|
11
|
+
} | {
|
|
12
|
+
readonly kind: "missed";
|
|
13
|
+
};
|
|
14
|
+
/** Run a genuine channel turn with host-owned fan-out depth attached out of band. */
|
|
15
|
+
export declare function runWithProcessJobWakeContext<T>(context: ProcessJobWakeContext, operation: () => Promise<T>, deliveryKey: string): Promise<T>;
|
|
16
|
+
/**
|
|
17
|
+
* Capture an admitted host wake on the exact request identity that survives
|
|
18
|
+
* the responder-to-harness queue boundary. The association remains outside
|
|
19
|
+
* public/string metadata, prompts, history, traces, and serialized payloads.
|
|
20
|
+
*/
|
|
21
|
+
export declare function bindProcessJobWakeContextToResponder(responder: AgentResponder): AgentResponder;
|
|
22
|
+
/** Resolve only an association previously issued by the app-owned responder seam. */
|
|
23
|
+
export declare function processJobWakeContextForRequest(request: Pick<AgentRequestBase, "metadata">): ProcessJobWakeContextResolution;
|
|
24
|
+
//# sourceMappingURL=process-jobs-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-jobs-context.d.ts","sourceRoot":"","sources":["../src/process-jobs-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EAEf,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAYD,MAAM,MAAM,+BAA+B,GACvC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAgBhC,qFAAqF;AACrF,wBAAsB,4BAA4B,CAAC,CAAC,EAClD,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAAC,SAAS,EAAE,cAAc,GAAG,cAAc,CAoD9F;AAED,qFAAqF;AACrF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAC1C,+BAA+B,CAYjC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
const wakeContext = new AsyncLocalStorage();
|
|
3
|
+
const PROCESS_JOB_WAKE_DELIVERY_METADATA = Symbol.for("mono-agent.process-job-wake.delivery-key.v1");
|
|
4
|
+
// The metadata object is only an identity key. No string field is added to it,
|
|
5
|
+
// and a wire/user-created object cannot forge membership in this owner-private
|
|
6
|
+
// map or serialize the symbol-keyed adapter fallback below.
|
|
7
|
+
// The responder-to-harness conversion deliberately preserves this object
|
|
8
|
+
// identity even when same-conversation live-session work is queued and cloned.
|
|
9
|
+
const wakeContextByRequestMetadata = new WeakMap();
|
|
10
|
+
// Registered before the channel router is entered and cleared only after that
|
|
11
|
+
// route settles. Slack and Telegram carry this exact durable delivery identity
|
|
12
|
+
// on a non-JSON symbol so a queued adapter callback can recover its own flight
|
|
13
|
+
// without attributing context to unrelated work in the same conversation.
|
|
14
|
+
const wakeFlightsByDeliveryKey = new Map();
|
|
15
|
+
/** Run a genuine channel turn with host-owned fan-out depth attached out of band. */
|
|
16
|
+
export async function runWithProcessJobWakeContext(context, operation, deliveryKey) {
|
|
17
|
+
const flight = Object.freeze({
|
|
18
|
+
...context,
|
|
19
|
+
token: Object.freeze({}),
|
|
20
|
+
deliveryKey,
|
|
21
|
+
});
|
|
22
|
+
const current = wakeFlightsByDeliveryKey.get(deliveryKey) ?? [];
|
|
23
|
+
wakeFlightsByDeliveryKey.set(deliveryKey, [...current, flight]);
|
|
24
|
+
try {
|
|
25
|
+
return await wakeContext.run(flight, operation);
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
const active = wakeFlightsByDeliveryKey.get(deliveryKey) ?? [];
|
|
29
|
+
const remaining = active.filter((candidate) => candidate.token !== flight.token);
|
|
30
|
+
if (remaining.length === 0)
|
|
31
|
+
wakeFlightsByDeliveryKey.delete(deliveryKey);
|
|
32
|
+
else
|
|
33
|
+
wakeFlightsByDeliveryKey.set(deliveryKey, remaining);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Capture an admitted host wake on the exact request identity that survives
|
|
38
|
+
* the responder-to-harness queue boundary. The association remains outside
|
|
39
|
+
* public/string metadata, prompts, history, traces, and serialized payloads.
|
|
40
|
+
*/
|
|
41
|
+
export function bindProcessJobWakeContextToResponder(responder) {
|
|
42
|
+
const dispose = responder.dispose;
|
|
43
|
+
const startNewSession = responder.startNewSession;
|
|
44
|
+
return {
|
|
45
|
+
respond: async (request, stream) => {
|
|
46
|
+
const context = wakeContext.getStore();
|
|
47
|
+
let installed;
|
|
48
|
+
if (context !== undefined) {
|
|
49
|
+
if (request.metadata === undefined) {
|
|
50
|
+
throw new Error("A process-job wake request is missing its host-owned request identity.");
|
|
51
|
+
}
|
|
52
|
+
installed = { token: Object.freeze({}), flight: context };
|
|
53
|
+
const current = wakeContextByRequestMetadata.get(request.metadata) ?? [];
|
|
54
|
+
wakeContextByRequestMetadata.set(request.metadata, [...current, installed]);
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
return await responder.respond(request, stream);
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
if (installed !== undefined && request.metadata !== undefined) {
|
|
61
|
+
const current = wakeContextByRequestMetadata.get(request.metadata) ?? [];
|
|
62
|
+
const remaining = current.filter((candidate) => candidate.token !== installed.token);
|
|
63
|
+
// Only the invocation that installed this exact token may remove it.
|
|
64
|
+
// Re-entrant calls using the same metadata identity retain their own
|
|
65
|
+
// binding until their corresponding responder invocation settles.
|
|
66
|
+
if (remaining.length === 0)
|
|
67
|
+
wakeContextByRequestMetadata.delete(request.metadata);
|
|
68
|
+
else
|
|
69
|
+
wakeContextByRequestMetadata.set(request.metadata, remaining);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
...(responder.cancel === undefined ? {} : { cancel: responder.cancel.bind(responder) }),
|
|
74
|
+
...(responder.offerLiveInput === undefined
|
|
75
|
+
? {}
|
|
76
|
+
: { offerLiveInput: responder.offerLiveInput.bind(responder) }),
|
|
77
|
+
...(responder.deliverVerbatim === undefined
|
|
78
|
+
? {}
|
|
79
|
+
: { deliverVerbatim: responder.deliverVerbatim.bind(responder) }),
|
|
80
|
+
...(responder.openReplyArtifact === undefined
|
|
81
|
+
? {}
|
|
82
|
+
: { openReplyArtifact: responder.openReplyArtifact.bind(responder) }),
|
|
83
|
+
...(responder.loadMcpApp === undefined
|
|
84
|
+
? {}
|
|
85
|
+
: { loadMcpApp: responder.loadMcpApp.bind(responder) }),
|
|
86
|
+
...(responder.requestMcpApp === undefined
|
|
87
|
+
? {}
|
|
88
|
+
: { requestMcpApp: responder.requestMcpApp.bind(responder) }),
|
|
89
|
+
...(startNewSession === undefined
|
|
90
|
+
? {}
|
|
91
|
+
: { startNewSession: startNewSession.bind(responder) }),
|
|
92
|
+
...(dispose === undefined ? {} : { dispose: dispose.bind(responder) }),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/** Resolve only an association previously issued by the app-owned responder seam. */
|
|
96
|
+
export function processJobWakeContextForRequest(request) {
|
|
97
|
+
const bindings = request.metadata === undefined
|
|
98
|
+
? []
|
|
99
|
+
: wakeContextByRequestMetadata.get(request.metadata) ?? [];
|
|
100
|
+
if (bindings.length > 0) {
|
|
101
|
+
return resolveFlights(bindings.map((binding) => binding.flight));
|
|
102
|
+
}
|
|
103
|
+
const deliveryKey = processJobWakeDeliveryKey(request.metadata);
|
|
104
|
+
if (deliveryKey === undefined)
|
|
105
|
+
return { kind: "none" };
|
|
106
|
+
const flights = wakeFlightsByDeliveryKey.get(deliveryKey) ?? [];
|
|
107
|
+
if (flights.length === 0)
|
|
108
|
+
return { kind: "none" };
|
|
109
|
+
return resolveFlights(flights);
|
|
110
|
+
}
|
|
111
|
+
function processJobWakeDeliveryKey(metadata) {
|
|
112
|
+
if (metadata === undefined)
|
|
113
|
+
return undefined;
|
|
114
|
+
try {
|
|
115
|
+
const descriptor = Object.getOwnPropertyDescriptor(metadata, PROCESS_JOB_WAKE_DELIVERY_METADATA);
|
|
116
|
+
return descriptor !== undefined
|
|
117
|
+
&& "value" in descriptor
|
|
118
|
+
&& typeof descriptor.value === "string"
|
|
119
|
+
? descriptor.value
|
|
120
|
+
: undefined;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function resolveFlights(flights) {
|
|
127
|
+
const distinct = [...new Map(flights.map((flight) => [flight.token, flight])).values()];
|
|
128
|
+
if (distinct.length === 1)
|
|
129
|
+
return { kind: "resolved", context: publicWakeContext(distinct[0]) };
|
|
130
|
+
return { kind: "missed" };
|
|
131
|
+
}
|
|
132
|
+
function publicWakeContext(context) {
|
|
133
|
+
return Object.freeze({ jobId: context.jobId, chainDepth: context.chainDepth });
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=process-jobs-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-jobs-context.js","sourceRoot":"","sources":["../src/process-jobs-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type MonoAgentConfig } from "@mono-agent/config";
|
|
2
|
+
import type { ProcessJobsSettings } from "./process-jobs-config.js";
|
|
3
|
+
import type { ProcessJobsRootRegistrySnapshot } from "./process-jobs-root-registry.js";
|
|
4
|
+
export declare const PROCESS_JOBS_UNSAFE_HOST_WARNING = "UNSAFE: ProcessJobs state and operator secret are model-accessible.";
|
|
5
|
+
export type ProcessJobsProtectionKind = "inactive" | "srt-protected" | "unsafe-unprotected" | "unavailable";
|
|
6
|
+
/** App-private authority; deliberately absent from every package-root factory. */
|
|
7
|
+
export interface ProcessJobsProtectionPosture {
|
|
8
|
+
readonly kind: ProcessJobsProtectionKind;
|
|
9
|
+
readonly retainedRoots: boolean;
|
|
10
|
+
readonly requiresPiNative: boolean;
|
|
11
|
+
readonly suppressSyntheticSandbox: boolean;
|
|
12
|
+
readonly unsafeAllowUnprotectedState: boolean;
|
|
13
|
+
readonly warning?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ProcessJobsProtectionStatus {
|
|
16
|
+
readonly protection: ProcessJobsProtectionKind;
|
|
17
|
+
readonly retainedRoots: boolean;
|
|
18
|
+
readonly unsafeAllowUnprotectedState: boolean;
|
|
19
|
+
readonly warning?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolve one posture after the registry snapshot has been strictly loaded and
|
|
23
|
+
* attested by its owner. Registry failure wins over every unsafe opt-in check.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveProcessJobsProtectionPosture(input: {
|
|
26
|
+
readonly settings: Pick<ProcessJobsSettings, "enabled" | "unsafeAllowUnprotectedState">;
|
|
27
|
+
readonly registry: ProcessJobsRootRegistrySnapshot;
|
|
28
|
+
readonly coreConfig: MonoAgentConfig;
|
|
29
|
+
}): ProcessJobsProtectionPosture;
|
|
30
|
+
export declare function processJobsProtectionStatus(posture: ProcessJobsProtectionPosture): ProcessJobsProtectionStatus;
|
|
31
|
+
/** Preserve safe-default operator output byte-for-byte; project only the opt-in warning. */
|
|
32
|
+
export declare function unsafeProcessJobsProtectionStatus(posture: ProcessJobsProtectionPosture | undefined): ProcessJobsProtectionStatus | undefined;
|
|
33
|
+
//# sourceMappingURL=process-jobs-protection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-jobs-protection.d.ts","sourceRoot":"","sources":["../src/process-jobs-protection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAGvF,eAAO,MAAM,gCAAgC,wEAC0B,CAAC;AAExE,MAAM,MAAM,yBAAyB,GACjC,UAAU,GACV,eAAe,GACf,oBAAoB,GACpB,aAAa,CAAC;AAElB,kFAAkF;AAClF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,2BAA2B,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,2BAA2B,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,6BAA6B,CAAC,CAAC;IACxF,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC,GAAG,4BAA4B,CAoD/B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,GACpC,2BAA2B,CAO7B;AAED,4FAA4F;AAC5F,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,4BAA4B,GAAG,SAAS,GAChD,2BAA2B,GAAG,SAAS,CAIzC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { MonoAgentConfigError } from "@mono-agent/config";
|
|
2
|
+
import { configuredProcessJobsRoutesOnlyPiNative } from "./runtime-routes.js";
|
|
3
|
+
export const PROCESS_JOBS_UNSAFE_HOST_WARNING = "UNSAFE: ProcessJobs state and operator secret are model-accessible.";
|
|
4
|
+
/**
|
|
5
|
+
* Resolve one posture after the registry snapshot has been strictly loaded and
|
|
6
|
+
* attested by its owner. Registry failure wins over every unsafe opt-in check.
|
|
7
|
+
*/
|
|
8
|
+
export function resolveProcessJobsProtectionPosture(input) {
|
|
9
|
+
const retainedRoots = input.registry.kind === "ready";
|
|
10
|
+
if (input.registry.kind === "failed") {
|
|
11
|
+
return {
|
|
12
|
+
kind: "unavailable",
|
|
13
|
+
retainedRoots: false,
|
|
14
|
+
requiresPiNative: true,
|
|
15
|
+
suppressSyntheticSandbox: false,
|
|
16
|
+
unsafeAllowUnprotectedState: false,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (!input.settings.unsafeAllowUnprotectedState) {
|
|
20
|
+
return retainedRoots
|
|
21
|
+
? {
|
|
22
|
+
kind: "srt-protected",
|
|
23
|
+
retainedRoots: true,
|
|
24
|
+
requiresPiNative: true,
|
|
25
|
+
suppressSyntheticSandbox: false,
|
|
26
|
+
unsafeAllowUnprotectedState: false,
|
|
27
|
+
}
|
|
28
|
+
: {
|
|
29
|
+
kind: "inactive",
|
|
30
|
+
retainedRoots: false,
|
|
31
|
+
requiresPiNative: false,
|
|
32
|
+
suppressSyntheticSandbox: false,
|
|
33
|
+
unsafeAllowUnprotectedState: false,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (!input.settings.enabled && !retainedRoots) {
|
|
37
|
+
throw unsafePostureConfigError("processJobs.unsafeAllowUnprotectedState requires processJobs.enabled=true or retained ProcessJobs roots.");
|
|
38
|
+
}
|
|
39
|
+
if (input.coreConfig.sandbox?.mode !== "off") {
|
|
40
|
+
throw unsafePostureConfigError("processJobs.unsafeAllowUnprotectedState requires an explicit sandbox.mode of off.");
|
|
41
|
+
}
|
|
42
|
+
if (!configuredProcessJobsRoutesOnlyPiNative(input.coreConfig)) {
|
|
43
|
+
throw unsafePostureConfigError("processJobs.unsafeAllowUnprotectedState requires every configured primary, fallback, Agent child, and agent-host memory route to be Pi-native.");
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
kind: "unsafe-unprotected",
|
|
47
|
+
retainedRoots,
|
|
48
|
+
requiresPiNative: true,
|
|
49
|
+
suppressSyntheticSandbox: true,
|
|
50
|
+
unsafeAllowUnprotectedState: true,
|
|
51
|
+
warning: PROCESS_JOBS_UNSAFE_HOST_WARNING,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function processJobsProtectionStatus(posture) {
|
|
55
|
+
return {
|
|
56
|
+
protection: posture.kind,
|
|
57
|
+
retainedRoots: posture.retainedRoots,
|
|
58
|
+
unsafeAllowUnprotectedState: posture.unsafeAllowUnprotectedState,
|
|
59
|
+
...(posture.warning === undefined ? {} : { warning: posture.warning }),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Preserve safe-default operator output byte-for-byte; project only the opt-in warning. */
|
|
63
|
+
export function unsafeProcessJobsProtectionStatus(posture) {
|
|
64
|
+
return posture?.kind === "unsafe-unprotected"
|
|
65
|
+
? processJobsProtectionStatus(posture)
|
|
66
|
+
: undefined;
|
|
67
|
+
}
|
|
68
|
+
function unsafePostureConfigError(message) {
|
|
69
|
+
return new MonoAgentConfigError("invalid_json", message, {
|
|
70
|
+
path: "processJobs.unsafeAllowUnprotectedState",
|
|
71
|
+
reason: message,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=process-jobs-protection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-jobs-protection.js","sourceRoot":"","sources":["../src/process-jobs-protection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAwB,MAAM,oBAAoB,CAAC;AAIhF,OAAO,EAAE,uCAAuC,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,CAAC,MAAM,gCAAgC,GAC3C,qEAAqE,CAAC;AAyBxE;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CAAC,KAInD;IACC,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC;IACtD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,aAAa,EAAE,KAAK;YACpB,gBAAgB,EAAE,IAAI;YACtB,wBAAwB,EAAE,KAAK;YAC/B,2BAA2B,EAAE,KAAK;SACnC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,EAAE,CAAC;QAChD,OAAO,aAAa;YAClB,CAAC,CAAC;gBACE,IAAI,EAAE,eAAe;gBACrB,aAAa,EAAE,IAAI;gBACnB,gBAAgB,EAAE,IAAI;gBACtB,wBAAwB,EAAE,KAAK;gBAC/B,2BAA2B,EAAE,KAAK;aACnC;YACH,CAAC,CAAC;gBACE,IAAI,EAAE,UAAU;gBAChB,aAAa,EAAE,KAAK;gBACpB,gBAAgB,EAAE,KAAK;gBACvB,wBAAwB,EAAE,KAAK;gBAC/B,2BAA2B,EAAE,KAAK;aACnC,CAAC;IACR,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,wBAAwB,CAC5B,0GAA0G,CAC3G,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;QAC7C,MAAM,wBAAwB,CAC5B,mFAAmF,CACpF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,uCAAuC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/D,MAAM,wBAAwB,CAC5B,gJAAgJ,CACjJ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,aAAa;QACb,gBAAgB,EAAE,IAAI;QACtB,wBAAwB,EAAE,IAAI;QAC9B,2BAA2B,EAAE,IAAI;QACjC,OAAO,EAAE,gCAAgC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAAqC;IAErC,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,IAAI;QACxB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,2BAA2B,EAAE,OAAO,CAAC,2BAA2B;QAChE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,iCAAiC,CAC/C,OAAiD;IAEjD,OAAO,OAAO,EAAE,IAAI,KAAK,oBAAoB;QAC3C,CAAC,CAAC,2BAA2B,CAAC,OAAO,CAAC;QACtC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe;IAC/C,OAAO,IAAI,oBAAoB,CAAC,cAAc,EAAE,OAAO,EAAE;QACvD,IAAI,EAAE,yCAAyC;QAC/C,MAAM,EAAE,OAAO;KAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { type AgentRootCoordinator, type AgentRootProtectionGeneration } from "./agent-root-coordinator.js";
|
|
2
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_SCHEMA = "mono-agent.process-jobs-roots.v1";
|
|
3
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_DIRECTORY = "process-jobs-roots-v1";
|
|
4
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_FILE = "registry.json";
|
|
5
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_RECOVERY_DIRECTORY = "process-jobs-roots-v1.recovery";
|
|
6
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_STAGING_FILE = "registry.staging.json";
|
|
7
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_PREVIOUS_FILE = "registry.previous.json";
|
|
8
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_FAILED_FILE = "registry.failed.json";
|
|
9
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_MAX_RECOVERY_ENTRIES = 3;
|
|
10
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_MAX_ROOTS = 64;
|
|
11
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_MAX_SEGMENTS = 64;
|
|
12
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_MAX_SEGMENT_BYTES = 255;
|
|
13
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_MAX_ROOT_BYTES: number;
|
|
14
|
+
export declare const PROCESS_JOBS_ROOT_REGISTRY_MAX_BYTES: number;
|
|
15
|
+
export declare const PROCESS_JOBS_REGISTRY_UNAVAILABLE_ERROR = "Process-job private-state protection is unavailable.";
|
|
16
|
+
declare const REGISTRATION_PROOF: unique symbol;
|
|
17
|
+
interface FileIdentity {
|
|
18
|
+
readonly dev: bigint;
|
|
19
|
+
readonly ino: bigint;
|
|
20
|
+
}
|
|
21
|
+
export interface RegisteredProcessJobsRoot {
|
|
22
|
+
readonly segments: readonly string[];
|
|
23
|
+
readonly key: string;
|
|
24
|
+
readonly lexicalPath: string;
|
|
25
|
+
readonly canonicalPath: string;
|
|
26
|
+
readonly protectedPaths: readonly string[];
|
|
27
|
+
}
|
|
28
|
+
export interface EmptyProcessJobsRootRegistrySnapshot {
|
|
29
|
+
readonly kind: "empty";
|
|
30
|
+
readonly agentRoot: string;
|
|
31
|
+
readonly registryDir: string;
|
|
32
|
+
readonly recoveryDir: string;
|
|
33
|
+
readonly manifestPath: string;
|
|
34
|
+
readonly mutationLockPath: string;
|
|
35
|
+
readonly generation: AgentRootProtectionGeneration;
|
|
36
|
+
readonly roots: readonly [];
|
|
37
|
+
readonly protectedRoots: readonly [];
|
|
38
|
+
}
|
|
39
|
+
export interface ReadyProcessJobsRootRegistrySnapshot {
|
|
40
|
+
readonly kind: "ready";
|
|
41
|
+
readonly agentRoot: string;
|
|
42
|
+
readonly registryDir: string;
|
|
43
|
+
readonly recoveryDir: string;
|
|
44
|
+
readonly manifestPath: string;
|
|
45
|
+
readonly mutationLockPath: string;
|
|
46
|
+
readonly generation: AgentRootProtectionGeneration;
|
|
47
|
+
readonly roots: readonly RegisteredProcessJobsRoot[];
|
|
48
|
+
readonly protectedRoots: readonly string[];
|
|
49
|
+
readonly manifestIdentity: FileIdentity;
|
|
50
|
+
readonly manifestContents: Buffer;
|
|
51
|
+
}
|
|
52
|
+
export interface FailedProcessJobsRootRegistrySnapshot {
|
|
53
|
+
readonly kind: "failed";
|
|
54
|
+
readonly agentRoot: string;
|
|
55
|
+
readonly registryDir: string;
|
|
56
|
+
readonly recoveryDir: string;
|
|
57
|
+
readonly manifestPath: string;
|
|
58
|
+
readonly mutationLockPath: string;
|
|
59
|
+
readonly generation: AgentRootProtectionGeneration;
|
|
60
|
+
readonly roots: readonly [];
|
|
61
|
+
readonly protectedRoots: readonly string[];
|
|
62
|
+
readonly error: string;
|
|
63
|
+
}
|
|
64
|
+
export type ProcessJobsRootRegistrySnapshot = EmptyProcessJobsRootRegistrySnapshot | ReadyProcessJobsRootRegistrySnapshot | FailedProcessJobsRootRegistrySnapshot;
|
|
65
|
+
export interface ProcessJobsRootRegistrationProof {
|
|
66
|
+
readonly snapshot: ReadyProcessJobsRootRegistrySnapshot;
|
|
67
|
+
readonly rootKey: string;
|
|
68
|
+
readonly [REGISTRATION_PROOF]: true;
|
|
69
|
+
}
|
|
70
|
+
interface ProcessJobsRootRegistrationHooks {
|
|
71
|
+
/** @internal Deterministic failure seam after first-directory creation and before manifest staging. */
|
|
72
|
+
readonly afterRegistryDirectoryCreated?: () => void | Promise<void>;
|
|
73
|
+
/** @internal Deterministic publication and recovery seams for crash-matrix tests. */
|
|
74
|
+
readonly afterManifestPublish?: () => void | Promise<void>;
|
|
75
|
+
readonly beforeManifestRestore?: () => void | Promise<void>;
|
|
76
|
+
readonly beforeRegistryRecovery?: () => void | Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
export interface ProcessJobsRootRegistryFreeze {
|
|
79
|
+
readonly snapshot: EmptyProcessJobsRootRegistrySnapshot | ReadyProcessJobsRootRegistrySnapshot;
|
|
80
|
+
reattest(workspace: string): Promise<EmptyProcessJobsRootRegistrySnapshot | ReadyProcessJobsRootRegistrySnapshot>;
|
|
81
|
+
release(): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
export declare function processJobsRootRegistryPaths(agentRoot: string): {
|
|
84
|
+
readonly registryDir: string;
|
|
85
|
+
readonly recoveryDir: string;
|
|
86
|
+
readonly manifestPath: string;
|
|
87
|
+
readonly stagingPath: string;
|
|
88
|
+
readonly previousPath: string;
|
|
89
|
+
readonly failedPath: string;
|
|
90
|
+
readonly mutationLockPath: string;
|
|
91
|
+
};
|
|
92
|
+
/** Load a strict snapshot; malformed or unsafe durable state becomes a provider-zero state. */
|
|
93
|
+
export declare function loadProcessJobsRootRegistryProtection(agentRoot: string, workspace: string): Promise<ProcessJobsRootRegistrySnapshot>;
|
|
94
|
+
export declare function failedProcessJobsRootRegistryProtection(canonicalAgentRoot: string): FailedProcessJobsRootRegistrySnapshot;
|
|
95
|
+
/** Re-read and identity-prove the captured manifest at a request/destructive boundary. */
|
|
96
|
+
export declare function attestProcessJobsRootRegistrySnapshot(snapshot: ProcessJobsRootRegistrySnapshot, workspace: string): Promise<EmptyProcessJobsRootRegistrySnapshot | ReadyProcessJobsRootRegistrySnapshot>;
|
|
97
|
+
/** Fsync a monotonic registration before any ProcessJobs root creation/open. */
|
|
98
|
+
export declare function registerProcessJobsRoot(options: {
|
|
99
|
+
readonly agentRoot: string;
|
|
100
|
+
readonly workspace: string;
|
|
101
|
+
readonly stateDir: string;
|
|
102
|
+
readonly coordinator: AgentRootCoordinator;
|
|
103
|
+
readonly hooks?: ProcessJobsRootRegistrationHooks;
|
|
104
|
+
}): Promise<ProcessJobsRootRegistrationProof>;
|
|
105
|
+
/** Hold the registry mutation lock across clear-sessions preflight and first rename. */
|
|
106
|
+
export declare function freezeProcessJobsRootRegistry(agentRoot: string, workspace: string): Promise<ProcessJobsRootRegistryFreeze>;
|
|
107
|
+
/** Prove a supplied state directory remains in the exact registered generation. */
|
|
108
|
+
export declare function attestProcessJobsRootRegistration(proofValue: ProcessJobsRootRegistrationProof, workspace: string, stateDir: string): Promise<ReadyProcessJobsRootRegistrySnapshot>;
|
|
109
|
+
/** All state roots must remain disjoint from every destructive/control path. */
|
|
110
|
+
export declare function assertProcessJobsRegistryDisjointFromPaths(snapshot: EmptyProcessJobsRootRegistrySnapshot | ReadyProcessJobsRootRegistrySnapshot, paths: readonly string[]): void;
|
|
111
|
+
export declare function processJobsProtectionPolicyRoots(snapshot: ProcessJobsRootRegistrySnapshot): readonly string[];
|
|
112
|
+
export declare function processJobsRootForKey(snapshot: ProcessJobsRootRegistrySnapshot, key: string): RegisteredProcessJobsRoot | undefined;
|
|
113
|
+
export declare function processJobsRegistryGeneration(snapshot: ProcessJobsRootRegistrySnapshot): AgentRootProtectionGeneration;
|
|
114
|
+
export {};
|
|
115
|
+
//# sourceMappingURL=process-jobs-root-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-jobs-root-registry.d.ts","sourceRoot":"","sources":["../src/process-jobs-root-registry.ts"],"names":[],"mappings":"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"}
|