@mono-agent/agent-app 0.20.0 → 0.20.2
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 +7 -2
- package/dist/app-controller-channels.d.ts +3 -1
- package/dist/app-controller-channels.d.ts.map +1 -1
- package/dist/app-controller-channels.js +9 -2
- package/dist/app-controller-channels.js.map +1 -1
- package/dist/app-controller-maintenance.d.ts +2 -0
- package/dist/app-controller-maintenance.d.ts.map +1 -1
- package/dist/app-controller-maintenance.js +2 -0
- 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 +5 -1
- package/dist/app-controller-process-jobs.d.ts.map +1 -1
- package/dist/app-controller-process-jobs.js +22 -34
- package/dist/app-controller-process-jobs.js.map +1 -1
- package/dist/app-controller-responder.d.ts +3 -1
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +31 -11
- package/dist/app-controller-responder.js.map +1 -1
- package/dist/app-controller-traceability.d.ts +2 -0
- package/dist/app-controller-traceability.d.ts.map +1 -1
- package/dist/app-controller-traceability.js +14 -3
- 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.d.ts +6 -1
- package/dist/app-controller.d.ts.map +1 -1
- package/dist/app-controller.js +16 -1
- package/dist/app-controller.js.map +1 -1
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +22 -0
- package/dist/background.js.map +1 -1
- package/dist/channel-drivers/slack.d.ts.map +1 -1
- package/dist/channel-drivers/slack.js +48 -0
- 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 +54 -0
- package/dist/channel-drivers/telegram.js.map +1 -1
- package/dist/channel-drivers/tui.d.ts.map +1 -1
- package/dist/channel-drivers/tui.js +68 -0
- package/dist/channel-drivers/tui.js.map +1 -1
- package/dist/cli-background-command.d.ts.map +1 -1
- package/dist/cli-background-command.js +5 -0
- package/dist/cli-background-command.js.map +1 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +6 -0
- package/dist/config-reference.js.map +1 -1
- package/dist/configured-agent.d.ts +23 -20
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +72 -36
- package/dist/configured-agent.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +37 -1
- package/dist/doctor.js.map +1 -1
- package/dist/local-configuration.d.ts.map +1 -1
- package/dist/local-configuration.js +4 -3
- package/dist/local-configuration.js.map +1 -1
- package/dist/process-job-channel-routing.d.ts +16 -0
- package/dist/process-job-channel-routing.d.ts.map +1 -0
- package/dist/process-job-channel-routing.js +104 -0
- package/dist/process-job-channel-routing.js.map +1 -0
- package/dist/process-jobs-config.d.ts +2 -0
- package/dist/process-jobs-config.d.ts.map +1 -1
- package/dist/process-jobs-config.js +4 -0
- package/dist/process-jobs-config.js.map +1 -1
- package/dist/process-jobs-context.d.ts +10 -0
- package/dist/process-jobs-context.d.ts.map +1 -1
- package/dist/process-jobs-context.js +98 -1
- package/dist/process-jobs-context.js.map +1 -1
- 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-runtime.d.ts +6 -1
- package/dist/process-jobs-runtime.d.ts.map +1 -1
- package/dist/process-jobs-runtime.js +34 -13
- package/dist/process-jobs-runtime.js.map +1 -1
- package/dist/process-jobs-service.d.ts +1 -1
- package/dist/process-jobs-service.d.ts.map +1 -1
- package/dist/process-jobs-service.js +3 -6
- package/dist/process-jobs-service.js.map +1 -1
- package/dist/process-jobs-store.d.ts +2 -1
- package/dist/process-jobs-store.d.ts.map +1 -1
- package/dist/process-jobs-store.js +12 -8
- package/dist/process-jobs-store.js.map +1 -1
- package/dist/runtime-option-extensions.d.ts +2 -0
- package/dist/runtime-option-extensions.d.ts.map +1 -1
- package/dist/runtime-option-extensions.js +2 -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/package.json +15 -15
- package/schema/mono-agent.config.schema.json +4 -0
- package/skills/mono-agent-composer/references/config-blueprint.md +1 -0
- package/skills/mono-agent-composer/references/feature-coverage.md +1 -1
|
@@ -12,6 +12,36 @@ const wakeContextByRequestMetadata = new WeakMap();
|
|
|
12
12
|
// on a non-JSON symbol so a queued adapter callback can recover its own flight
|
|
13
13
|
// without attributing context to unrelated work in the same conversation.
|
|
14
14
|
const wakeFlightsByDeliveryKey = new Map();
|
|
15
|
+
const steeringTargetsByConversation = new Map();
|
|
16
|
+
/** Register the exact active run whose controller can be raised by a host wake. */
|
|
17
|
+
export function registerProcessJobSteeringTarget(input) {
|
|
18
|
+
const conversationId = baseConversationId(input.conversationId);
|
|
19
|
+
const target = {
|
|
20
|
+
token: Object.freeze({}),
|
|
21
|
+
conversationId,
|
|
22
|
+
runId: input.runId,
|
|
23
|
+
baseChainDepth: input.chainDepth,
|
|
24
|
+
wakeDepths: new Map(),
|
|
25
|
+
};
|
|
26
|
+
const current = steeringTargetsByConversation.get(conversationId) ?? [];
|
|
27
|
+
steeringTargetsByConversation.set(conversationId, [...current, target]);
|
|
28
|
+
let released = false;
|
|
29
|
+
return {
|
|
30
|
+
chainDepth: () => effectiveSteeringDepth(target),
|
|
31
|
+
release: () => {
|
|
32
|
+
if (released)
|
|
33
|
+
return;
|
|
34
|
+
released = true;
|
|
35
|
+
target.wakeDepths.clear();
|
|
36
|
+
const active = steeringTargetsByConversation.get(conversationId) ?? [];
|
|
37
|
+
const remaining = active.filter((candidate) => candidate.token !== target.token);
|
|
38
|
+
if (remaining.length === 0)
|
|
39
|
+
steeringTargetsByConversation.delete(conversationId);
|
|
40
|
+
else
|
|
41
|
+
steeringTargetsByConversation.set(conversationId, remaining);
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
15
45
|
/** Run a genuine channel turn with host-owned fan-out depth attached out of band. */
|
|
16
46
|
export async function runWithProcessJobWakeContext(context, operation, deliveryKey) {
|
|
17
47
|
const flight = Object.freeze({
|
|
@@ -73,7 +103,9 @@ export function bindProcessJobWakeContextToResponder(responder) {
|
|
|
73
103
|
...(responder.cancel === undefined ? {} : { cancel: responder.cancel.bind(responder) }),
|
|
74
104
|
...(responder.offerLiveInput === undefined
|
|
75
105
|
? {}
|
|
76
|
-
: {
|
|
106
|
+
: {
|
|
107
|
+
offerLiveInput: (request) => offerProcessJobWakeToActiveRun(responder, request),
|
|
108
|
+
}),
|
|
77
109
|
...(responder.deliverVerbatim === undefined
|
|
78
110
|
? {}
|
|
79
111
|
: { deliverVerbatim: responder.deliverVerbatim.bind(responder) }),
|
|
@@ -92,6 +124,71 @@ export function bindProcessJobWakeContextToResponder(responder) {
|
|
|
92
124
|
...(dispose === undefined ? {} : { dispose: dispose.bind(responder) }),
|
|
93
125
|
};
|
|
94
126
|
}
|
|
127
|
+
function offerProcessJobWakeToActiveRun(responder, request) {
|
|
128
|
+
const offerLiveInput = responder.offerLiveInput;
|
|
129
|
+
if (offerLiveInput === undefined)
|
|
130
|
+
return { status: "unavailable", reason: "unsupported" };
|
|
131
|
+
const flight = processJobWakeFlightForOffer(request.deliveryKey);
|
|
132
|
+
if (flight === undefined)
|
|
133
|
+
return offerLiveInput.call(responder, request);
|
|
134
|
+
const candidates = steeringTargetsByConversation.get(baseConversationId(request.conversationId)) ?? [];
|
|
135
|
+
if (candidates.length !== 1)
|
|
136
|
+
return { status: "unavailable", reason: "inactive" };
|
|
137
|
+
const target = candidates[0];
|
|
138
|
+
const wakeToken = Object.freeze({});
|
|
139
|
+
target.wakeDepths.set(wakeToken, flight.chainDepth + 1);
|
|
140
|
+
const rollback = () => {
|
|
141
|
+
target.wakeDepths.delete(wakeToken);
|
|
142
|
+
};
|
|
143
|
+
let offer;
|
|
144
|
+
try {
|
|
145
|
+
offer = offerLiveInput.call(responder, {
|
|
146
|
+
...request,
|
|
147
|
+
targetRunId: target.runId,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
rollback();
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
if (offer.status === "unavailable") {
|
|
155
|
+
rollback();
|
|
156
|
+
return offer;
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
status: "accepted",
|
|
160
|
+
settled: offer.settled.then((settlement) => {
|
|
161
|
+
if (settlement.status !== "applied" || settlement.runId !== target.runId) {
|
|
162
|
+
rollback();
|
|
163
|
+
return settlement.status === "applied"
|
|
164
|
+
? { status: "requeue", reason: "failed" }
|
|
165
|
+
: settlement;
|
|
166
|
+
}
|
|
167
|
+
return settlement;
|
|
168
|
+
}, (error) => {
|
|
169
|
+
rollback();
|
|
170
|
+
throw error;
|
|
171
|
+
}),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function processJobWakeFlightForOffer(deliveryKey) {
|
|
175
|
+
const current = wakeContext.getStore();
|
|
176
|
+
if (current !== undefined)
|
|
177
|
+
return current;
|
|
178
|
+
if (deliveryKey === undefined)
|
|
179
|
+
return undefined;
|
|
180
|
+
const flights = wakeFlightsByDeliveryKey.get(deliveryKey) ?? [];
|
|
181
|
+
return flights.length === 1 ? flights[0] : undefined;
|
|
182
|
+
}
|
|
183
|
+
function effectiveSteeringDepth(target) {
|
|
184
|
+
let depth = target.baseChainDepth;
|
|
185
|
+
for (const wakeDepth of target.wakeDepths.values())
|
|
186
|
+
depth = Math.max(depth, wakeDepth);
|
|
187
|
+
return depth;
|
|
188
|
+
}
|
|
189
|
+
function baseConversationId(conversationId) {
|
|
190
|
+
return conversationId.split("#", 1)[0] ?? conversationId;
|
|
191
|
+
}
|
|
95
192
|
/** Resolve only an association previously issued by the app-owned responder seam. */
|
|
96
193
|
export function processJobWakeContextForRequest(request) {
|
|
97
194
|
const bindings = request.metadata === undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-jobs-context.js","sourceRoot":"","sources":["../src/process-jobs-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
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"}
|
|
@@ -5,6 +5,7 @@ import type { ChannelId } from "./channels.js";
|
|
|
5
5
|
import type { AgentRootOwnership } from "./agent-root-coordinator.js";
|
|
6
6
|
import { attestProcessJobsRootRegistrySnapshot, type ProcessJobsRootRegistrySnapshot } from "./process-jobs-root-registry.js";
|
|
7
7
|
import type { ProcessJobsServiceHandle } from "./process-jobs-service.js";
|
|
8
|
+
import type { ProcessJobsProtectionPosture } from "./process-jobs-protection.js";
|
|
8
9
|
import { type ProcessJobOriginRecord } from "./process-jobs-store.js";
|
|
9
10
|
import type { RuntimeOptionsExtension } from "./runtime-option-extensions.js";
|
|
10
11
|
export interface ProcessJobsRuntimeExtensionOptions {
|
|
@@ -16,7 +17,11 @@ export interface ProcessJobsRuntimeExtensionOptions {
|
|
|
16
17
|
readonly coreConfig: MonoAgentConfig;
|
|
17
18
|
readonly baseModel: RuntimeModelReference;
|
|
18
19
|
readonly channelId: ChannelId | undefined;
|
|
20
|
+
/** Explicit opted-in conversation scheme; legacy built-ins derive it from channelId. */
|
|
21
|
+
readonly conversationScheme?: string | undefined;
|
|
19
22
|
readonly sandboxEngine: SandboxEngine | undefined;
|
|
23
|
+
/** App-private; omission preserves the fail-closed public/default behavior. */
|
|
24
|
+
readonly protectionPosture?: ProcessJobsProtectionPosture;
|
|
20
25
|
/** Agent-root-aware preflight for every route reachable by this request. */
|
|
21
26
|
readonly routesOnlyPiNative?: (metadata: Record<string, unknown> | undefined) => boolean;
|
|
22
27
|
/** Deterministic unit-test seam; official composition always uses durable re-attestation. */
|
|
@@ -31,5 +36,5 @@ export declare function processJobsSandboxPolicy(options: {
|
|
|
31
36
|
readonly protectedRoots: readonly string[];
|
|
32
37
|
}): SandboxPolicy;
|
|
33
38
|
/** Strict host-origin classifier. Unsupported trigger surfaces never receive a controller. */
|
|
34
|
-
export declare function processJobOriginForRequest(input: Pick<AgentHarnessRuntimeOptionsInput, "request" | "runId">, channelId: ChannelId | undefined): ProcessJobOriginRecord | undefined;
|
|
39
|
+
export declare function processJobOriginForRequest(input: Pick<AgentHarnessRuntimeOptionsInput, "request" | "runId">, channelId: ChannelId | undefined, conversationScheme?: string): ProcessJobOriginRecord | undefined;
|
|
35
40
|
//# sourceMappingURL=process-jobs-runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-jobs-runtime.d.ts","sourceRoot":"","sources":["../src/process-jobs-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAyB,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EACL,qCAAqC,EAErC,KAAK,+BAA+B,EACrC,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"process-jobs-runtime.d.ts","sourceRoot":"","sources":["../src/process-jobs-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAyB,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EACL,qCAAqC,EAErC,KAAK,+BAA+B,EACrC,MAAM,iCAAiC,CAAC;AAMzC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;IACnD,8FAA8F;IAC9F,QAAQ,CAAC,OAAO,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IAC1C,wFAAwF;IACxF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAClD,+EAA+E;IAC/E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,4BAA4B,CAAC;IAC1D,4EAA4E;IAC5E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAAK,OAAO,CAAC;IACzF,6FAA6F;IAC7F,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,qCAAqC,CAAC;CACxE;AAED,eAAO,MAAM,qCAAqC,4DACS,CAAC;AAC5D,eAAO,MAAM,yCAAyC,yDACE,CAAC;AAEzD,uFAAuF;AACvF,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,uBAAuB,CAwGzB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC5F,aAAa,CAgBf;AA2BD,8FAA8F;AAC9F,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,IAAI,CAAC,+BAA+B,EAAE,SAAS,GAAG,OAAO,CAAC,EACjE,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,kBAAkB,CAAC,EAAE,MAAM,GAC1B,sBAAsB,GAAG,SAAS,CA6BpC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
2
2
|
import { failClosedSandboxPolicy, mergeSandboxPolicies, protectSandboxRoots, } from "@mono-agent/runtime-adapter";
|
|
3
3
|
import { attestProcessJobsRootRegistrySnapshot, processJobsProtectionPolicyRoots, } from "./process-jobs-root-registry.js";
|
|
4
|
-
import { processJobWakeContextForRequest } from "./process-jobs-context.js";
|
|
4
|
+
import { processJobWakeContextForRequest, registerProcessJobSteeringTarget, } from "./process-jobs-context.js";
|
|
5
5
|
import { isProcessJobOriginRecord, } from "./process-jobs-store.js";
|
|
6
6
|
export const PROCESS_JOBS_PI_NATIVE_REQUIRED_ERROR = "Process-job private state requires a Pi-native runtime.";
|
|
7
7
|
export const PROCESS_JOBS_PROTECTION_UNAVAILABLE_ERROR = "Process-job private state protection is unavailable.";
|
|
@@ -10,13 +10,15 @@ export function createProcessJobsRuntimeExtension(options) {
|
|
|
10
10
|
return async (input) => {
|
|
11
11
|
let result;
|
|
12
12
|
let lease;
|
|
13
|
+
let steeringTarget;
|
|
13
14
|
const attestRegistry = options.attestRegistry ?? attestProcessJobsRootRegistrySnapshot;
|
|
14
15
|
try {
|
|
15
16
|
const boundary = await attestRegistry(options.registry, options.coreConfig.runtime.workspace);
|
|
16
17
|
lease = options.ownership.coordinator.acquireRequestLease(boundary.generation);
|
|
17
18
|
const attested = await attestRegistry(boundary, options.coreConfig.runtime.workspace);
|
|
18
19
|
const protectedRoots = processJobsProtectionPolicyRoots(attested);
|
|
19
|
-
|
|
20
|
+
const retainedRoots = attested.kind === "ready";
|
|
21
|
+
if (retainedRoots
|
|
20
22
|
&& options.routesOnlyPiNative !== undefined
|
|
21
23
|
&& !options.routesOnlyPiNative(input.request.metadata)) {
|
|
22
24
|
throw new Error(PROCESS_JOBS_PI_NATIVE_REQUIRED_ERROR);
|
|
@@ -25,11 +27,11 @@ export function createProcessJobsRuntimeExtension(options) {
|
|
|
25
27
|
? { runtimeOptions: {}, cleanup: async () => { } }
|
|
26
28
|
: await options.next(input);
|
|
27
29
|
const effectiveModel = runtimeModel(result.runtimeOptions?.model) ?? options.baseModel;
|
|
28
|
-
if (
|
|
30
|
+
if (retainedRoots && effectiveModel.sdk !== "pi") {
|
|
29
31
|
throw new Error(PROCESS_JOBS_PI_NATIVE_REQUIRED_ERROR);
|
|
30
32
|
}
|
|
31
33
|
let runtimeOptions = result.runtimeOptions ?? {};
|
|
32
|
-
if (protectedRoots.length > 0) {
|
|
34
|
+
if (protectedRoots.length > 0 && options.protectionPosture?.suppressSyntheticSandbox !== true) {
|
|
33
35
|
if (!await sandboxEngineAvailable(options.sandboxEngine)) {
|
|
34
36
|
throw new Error(PROCESS_JOBS_PROTECTION_UNAVAILABLE_ERROR);
|
|
35
37
|
}
|
|
@@ -40,16 +42,23 @@ export function createProcessJobsRuntimeExtension(options) {
|
|
|
40
42
|
};
|
|
41
43
|
}
|
|
42
44
|
if (options.service !== undefined) {
|
|
43
|
-
const origin = processJobOriginForRequest(input, options.channelId);
|
|
45
|
+
const origin = processJobOriginForRequest(input, options.channelId, options.conversationScheme);
|
|
44
46
|
const wake = processJobWakeContextForRequest(input.request);
|
|
45
47
|
const chainDepth = wake.kind === "resolved" ? wake.context.chainDepth : 0;
|
|
48
|
+
if (origin !== undefined && wake.kind !== "missed") {
|
|
49
|
+
steeringTarget = registerProcessJobSteeringTarget({
|
|
50
|
+
conversationId: origin.baseConversationId,
|
|
51
|
+
runId: input.runId,
|
|
52
|
+
chainDepth,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
46
55
|
if (origin !== undefined
|
|
47
56
|
&& wake.kind !== "missed"
|
|
48
57
|
&& chainDepth < options.service.settings.maxChainDepth
|
|
49
58
|
&& hasAllowedProcessTool(options.coreConfig)) {
|
|
50
59
|
runtimeOptions = {
|
|
51
60
|
...runtimeOptions,
|
|
52
|
-
processJobs: options.service.controller(origin, chainDepth),
|
|
61
|
+
processJobs: options.service.controller(origin, steeringTarget?.chainDepth ?? chainDepth),
|
|
53
62
|
};
|
|
54
63
|
}
|
|
55
64
|
}
|
|
@@ -64,7 +73,12 @@ export function createProcessJobsRuntimeExtension(options) {
|
|
|
64
73
|
await result?.settleCleanup?.();
|
|
65
74
|
}
|
|
66
75
|
finally {
|
|
67
|
-
|
|
76
|
+
try {
|
|
77
|
+
steeringTarget?.release();
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
heldLease.releaseAfterSettlement();
|
|
81
|
+
}
|
|
68
82
|
}
|
|
69
83
|
},
|
|
70
84
|
};
|
|
@@ -79,7 +93,12 @@ export function createProcessJobsRuntimeExtension(options) {
|
|
|
79
93
|
await result?.settleCleanup?.();
|
|
80
94
|
}
|
|
81
95
|
finally {
|
|
82
|
-
|
|
96
|
+
try {
|
|
97
|
+
steeringTarget?.release();
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
lease?.releaseAfterSettlement();
|
|
101
|
+
}
|
|
83
102
|
}
|
|
84
103
|
}
|
|
85
104
|
throw error;
|
|
@@ -128,20 +147,22 @@ async function sandboxEngineAvailable(engine) {
|
|
|
128
147
|
}
|
|
129
148
|
}
|
|
130
149
|
/** Strict host-origin classifier. Unsupported trigger surfaces never receive a controller. */
|
|
131
|
-
export function processJobOriginForRequest(input, channelId) {
|
|
150
|
+
export function processJobOriginForRequest(input, channelId, conversationScheme) {
|
|
132
151
|
const request = input.request;
|
|
133
|
-
let channel;
|
|
134
|
-
if (channelId === "slack")
|
|
152
|
+
let channel = conversationScheme;
|
|
153
|
+
if (channel === undefined && channelId === "slack")
|
|
135
154
|
channel = "slack";
|
|
136
|
-
else if (channelId === "telegram")
|
|
155
|
+
else if (channel === undefined && channelId === "telegram")
|
|
137
156
|
channel = "telegram";
|
|
138
|
-
else if (channelId === "tui"
|
|
157
|
+
else if (channel === undefined && channelId === "tui"
|
|
139
158
|
&& request.metadata?.source === "web"
|
|
140
159
|
&& request.conversationId.startsWith("web:")
|
|
141
160
|
&& request.conversationId !== "web:new")
|
|
142
161
|
channel = "web";
|
|
143
162
|
if (channel === undefined)
|
|
144
163
|
return undefined;
|
|
164
|
+
if (!/^[a-z][a-z0-9-]*$/u.test(channel))
|
|
165
|
+
return undefined;
|
|
145
166
|
const conversationId = request.conversationId;
|
|
146
167
|
const hash = conversationId.indexOf("#");
|
|
147
168
|
const baseConversationId = hash < 0 ? conversationId : conversationId.slice(0, hash);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-jobs-runtime.js","sourceRoot":"","sources":["../src/process-jobs-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAI/D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,GAIpB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EACL,qCAAqC,EACrC,gCAAgC,GAEjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"process-jobs-runtime.js","sourceRoot":"","sources":["../src/process-jobs-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,7 @@ export interface ProcessJobsServiceHandle {
|
|
|
53
53
|
readonly settings: ProcessJobsSettings;
|
|
54
54
|
readonly operatorToken: string;
|
|
55
55
|
readonly health: ProcessJobsHealth;
|
|
56
|
-
controller(origin: ProcessJobOriginRecord, chainDepth: number): ProcessJobsController;
|
|
56
|
+
controller(origin: ProcessJobOriginRecord, chainDepth: number | (() => number)): ProcessJobsController;
|
|
57
57
|
list(): Promise<readonly ProcessJobProjection[]>;
|
|
58
58
|
get(jobId: string): Promise<ProcessJobProjection | undefined>;
|
|
59
59
|
cancel(jobId: string): Promise<ProcessJobProjection>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-jobs-service.d.ts","sourceRoot":"","sources":["../src/process-jobs-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"process-jobs-service.d.ts","sourceRoot":"","sources":["../src/process-jobs-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -166,7 +166,7 @@ class ProcessJobsService {
|
|
|
166
166
|
controller(origin, chainDepth) {
|
|
167
167
|
const captured = structuredClone(origin);
|
|
168
168
|
return Object.freeze({
|
|
169
|
-
start: async (request) => await this.start(captured, chainDepth, request),
|
|
169
|
+
start: async (request) => await this.start(captured, typeof chainDepth === "function" ? chainDepth() : chainDepth, request),
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
async list() {
|
|
@@ -1851,11 +1851,8 @@ function processOutputSecrets(overrides) {
|
|
|
1851
1851
|
return [...new Set(values)].sort((left, right) => right.length - left.length);
|
|
1852
1852
|
}
|
|
1853
1853
|
function isWakeCapableOrigin(origin) {
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
if (origin.channel === "telegram")
|
|
1857
|
-
return origin.replyToConversationId.startsWith("telegram:");
|
|
1858
|
-
return origin.replyToConversationId.startsWith("web:") && origin.replyToConversationId !== "web:new";
|
|
1854
|
+
return origin.replyToConversationId.startsWith(`${origin.channel}:`)
|
|
1855
|
+
&& (origin.channel !== "web" || origin.replyToConversationId !== "web:new");
|
|
1859
1856
|
}
|
|
1860
1857
|
function boundedSummary(value) {
|
|
1861
1858
|
const normalized = value.trim().length === 0 ? "Process job" : value.trim();
|