@corenel/harness 0.7.0 → 0.7.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/dist/core/loop.d.ts +21 -0
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +70 -5
- package/dist/core/loop.js.map +1 -1
- package/dist/guardrail/builtins.d.ts.map +1 -1
- package/dist/guardrail/builtins.js +5 -2
- package/dist/guardrail/builtins.js.map +1 -1
- package/dist/guardrail/permission-service.d.ts +16 -2
- package/dist/guardrail/permission-service.d.ts.map +1 -1
- package/dist/guardrail/permission-service.js +40 -2
- package/dist/guardrail/permission-service.js.map +1 -1
- package/dist/prompts/index.d.ts +10 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +6 -4
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/systemPromptSelection.d.ts +26 -0
- package/dist/prompts/systemPromptSelection.d.ts.map +1 -0
- package/dist/prompts/systemPromptSelection.js +30 -0
- package/dist/prompts/systemPromptSelection.js.map +1 -0
- package/dist/prompts/systemPrompts.d.ts +24 -0
- package/dist/prompts/systemPrompts.d.ts.map +1 -0
- package/dist/prompts/systemPrompts.js +65 -0
- package/dist/prompts/systemPrompts.js.map +1 -0
- package/dist/prompts/toolsMarker.d.ts +13 -1
- package/dist/prompts/toolsMarker.d.ts.map +1 -1
- package/dist/prompts/toolsMarker.js +14 -2
- package/dist/prompts/toolsMarker.js.map +1 -1
- package/dist/sidecar/host.d.ts +46 -0
- package/dist/sidecar/host.d.ts.map +1 -1
- package/dist/sidecar/host.js +142 -0
- package/dist/sidecar/host.js.map +1 -1
- package/dist/sidecar/server.d.ts +21 -0
- package/dist/sidecar/server.d.ts.map +1 -1
- package/dist/sidecar/server.js +90 -0
- package/dist/sidecar/server.js.map +1 -1
- package/dist/skills.d.ts +1 -1
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +9 -2
- package/dist/skills.js.map +1 -1
- package/dist/tools/builtins.d.ts.map +1 -1
- package/dist/tools/builtins.js +12 -0
- package/dist/tools/builtins.js.map +1 -1
- package/dist/tools/namespaces.d.ts.map +1 -1
- package/dist/tools/namespaces.js +3 -0
- package/dist/tools/namespaces.js.map +1 -1
- package/dist/tools/toolSearch.d.ts +50 -0
- package/dist/tools/toolSearch.d.ts.map +1 -0
- package/dist/tools/toolSearch.js +143 -0
- package/dist/tools/toolSearch.js.map +1 -0
- package/package.json +2 -2
package/dist/core/loop.d.ts
CHANGED
|
@@ -14,6 +14,14 @@ export interface RunAgentArgs {
|
|
|
14
14
|
system?: string;
|
|
15
15
|
messages: ChatCompletionMessageParam[];
|
|
16
16
|
tools: AgentTool[];
|
|
17
|
+
/** Tools reached by search rather than sent up front (every MCP tool, see
|
|
18
|
+
* tools/toolSearch.ts). When non-empty the run gains `tool_search`, the
|
|
19
|
+
* system prompt gains a server index, and the request's `tools` array is
|
|
20
|
+
* rebuilt before every model call from `tools` plus what has been loaded. */
|
|
21
|
+
deferredTools?: AgentTool[];
|
|
22
|
+
/** Deferred tool names this conversation loaded on earlier runs. Names no
|
|
23
|
+
* longer among `deferredTools` are dropped and reported via `tools-loaded`. */
|
|
24
|
+
loadedTools?: string[];
|
|
17
25
|
toolCtx: ToolContext;
|
|
18
26
|
maxTurns?: number;
|
|
19
27
|
/** Governance policy for the run (guardrail gates). Defaults to STANDARD_POLICY. */
|
|
@@ -66,5 +74,18 @@ export interface RunAgentResult {
|
|
|
66
74
|
usage: Usage;
|
|
67
75
|
stopReason: string;
|
|
68
76
|
}
|
|
77
|
+
/** The most tools one request may carry.
|
|
78
|
+
*
|
|
79
|
+
* OpenAI-compatible providers refuse the whole request above this -- "Invalid
|
|
80
|
+
* 'tools': array too long. Expected an array with maximum length 128" -- so it
|
|
81
|
+
* is a hard ceiling rather than a budget. The number is the strictest limit
|
|
82
|
+
* across the providers the gateway routes to; a provider that allows more is
|
|
83
|
+
* capped early, which costs reach on that model and never costs a run.
|
|
84
|
+
*
|
|
85
|
+
* Reaching it takes one server: Microsoft 365's six allowed scopes enable 207
|
|
86
|
+
* Graph endpoints between them. Curating what a conversation carries -- the
|
|
87
|
+
* source and per-tool switches in the composer popout -- is the real answer;
|
|
88
|
+
* this only guarantees the request is valid when nobody has. */
|
|
89
|
+
export declare const MAX_PROVIDER_TOOLS = 128;
|
|
69
90
|
export declare function runAgent(args: RunAgentArgs): Promise<RunAgentResult>;
|
|
70
91
|
//# sourceMappingURL=loop.d.ts.map
|
package/dist/core/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,0BAA0B,EAAsB,MAAM,mCAAmC,CAAC;AACxG,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAA4B,MAAM,mBAAmB,CAAC;AAE7G,OAAO,EACY,KAAK,cAAc,EAErC,MAAM,YAAY,CAAC;AAMpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAA0D,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,0BAA0B,EAAsB,MAAM,mCAAmC,CAAC;AACxG,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAA4B,MAAM,mBAAmB,CAAC;AAE7G,OAAO,EACY,KAAK,cAAc,EAErC,MAAM,YAAY,CAAC;AAMpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAA0D,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIhH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;kDAC8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB;;;kFAG8E;IAC9E,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5B;oFACgF;IAChF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;;;;;6EAQyE;IACzE,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,oEAAoE;IACpE,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC;0FACsF;IACtF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;yEAOqE;IACrE,aAAa,CAAC,EAAE,MAAM,0BAA0B,EAAE,CAAC;IACnD;;4DAEwD;IACxD,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC;IACpC;;;0EAGsE;IACtE,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACpD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;gEAWgE;AAChE,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAwa1E"}
|
package/dist/core/loop.js
CHANGED
|
@@ -7,6 +7,20 @@ import { STANDARD_POLICY } from '../guardrail/builtins.js';
|
|
|
7
7
|
import { toolAddress } from '../tools/namespaces.js';
|
|
8
8
|
import { effectiveThreshold, formatOffloadRef, isOffloadPointer } from '../compression.js';
|
|
9
9
|
import { fillToolsMarker } from '../prompts/toolsMarker.js';
|
|
10
|
+
import { createToolLoader, serverIndex } from '../tools/toolSearch.js';
|
|
11
|
+
/** The most tools one request may carry.
|
|
12
|
+
*
|
|
13
|
+
* OpenAI-compatible providers refuse the whole request above this -- "Invalid
|
|
14
|
+
* 'tools': array too long. Expected an array with maximum length 128" -- so it
|
|
15
|
+
* is a hard ceiling rather than a budget. The number is the strictest limit
|
|
16
|
+
* across the providers the gateway routes to; a provider that allows more is
|
|
17
|
+
* capped early, which costs reach on that model and never costs a run.
|
|
18
|
+
*
|
|
19
|
+
* Reaching it takes one server: Microsoft 365's six allowed scopes enable 207
|
|
20
|
+
* Graph endpoints between them. Curating what a conversation carries -- the
|
|
21
|
+
* source and per-tool switches in the composer popout -- is the real answer;
|
|
22
|
+
* this only guarantees the request is valid when nobody has. */
|
|
23
|
+
export const MAX_PROVIDER_TOOLS = 128;
|
|
10
24
|
export async function runAgent(args) {
|
|
11
25
|
const { client, system, tools, toolCtx } = args;
|
|
12
26
|
const policy = args.policy ?? STANDARD_POLICY;
|
|
@@ -40,15 +54,54 @@ export async function runAgent(args) {
|
|
|
40
54
|
signal.addEventListener('abort', () => { turnAc?.abort(); });
|
|
41
55
|
args.registerInterrupt?.(() => { interrupted = true; turnAc?.abort(); });
|
|
42
56
|
const messages = [...args.messages];
|
|
43
|
-
|
|
57
|
+
/* DEFERRED TOOLS: sent only once found. The loader owns the loaded set;
|
|
58
|
+
* `activeTools` is what one request may carry right now -- the eager tools,
|
|
59
|
+
* `tool_search`, then the loaded ones, capped. Eager first so a full loaded
|
|
60
|
+
* set can never push out `read_file`. */
|
|
61
|
+
const deferred = args.deferredTools ?? [];
|
|
62
|
+
const loader = deferred.length
|
|
63
|
+
? createToolLoader({ deferred, loaded: args.loadedTools, onChange: (names) => emit({ type: 'tools-loaded', names }) })
|
|
64
|
+
: null;
|
|
65
|
+
const eager = loader ? [...tools, loader.searchTool] : tools;
|
|
66
|
+
const capped = (list) => (list.length > MAX_PROVIDER_TOOLS ? list.slice(0, MAX_PROVIDER_TOOLS) : list);
|
|
67
|
+
const activeTools = () => capped(loader ? [...eager, ...loader.loaded()] : eager);
|
|
68
|
+
let sent = activeTools();
|
|
69
|
+
const indexedSystem = loader ? (system ? `${system}\n\n${serverIndex(deferred)}` : serverIndex(deferred)) : system;
|
|
70
|
+
const filledSystem = indexedSystem ? fillToolsMarker(indexedSystem, sent) : indexedSystem;
|
|
44
71
|
if (filledSystem && !messages.some((m) => m.role === 'system')) {
|
|
45
72
|
messages.unshift({ role: 'system', content: filledSystem });
|
|
46
73
|
}
|
|
47
|
-
|
|
74
|
+
/* CAPPED, because a request over the limit is rejected WHOLE.
|
|
75
|
+
*
|
|
76
|
+
* "Gateway 400: Invalid 'tools': array too long. Expected an array with
|
|
77
|
+
* maximum length 128, but got an array with length 157." Not a degraded
|
|
78
|
+
* answer -- no answer, and a message naming a provider limit rather than
|
|
79
|
+
* anything the person can act on.
|
|
80
|
+
*
|
|
81
|
+
* 157 is what one real MCP server does: Microsoft 365's six allowed scopes
|
|
82
|
+
* enable 207 Graph endpoints between them. So this is the ordinary case for
|
|
83
|
+
* anyone who connects a server, not an edge case, and the loop must not build
|
|
84
|
+
* a request it already knows will be refused.
|
|
85
|
+
*
|
|
86
|
+
* THE HEAD IS KEPT, and the resolved array is ordered for exactly that: the
|
|
87
|
+
* builtins come first (files, shell, memory -- the agent's own competence),
|
|
88
|
+
* then whatever a host registered, then MCP and remote tools. An agent that
|
|
89
|
+
* lost `read_file` to make room for a mail endpoint would be worse than one
|
|
90
|
+
* that lost the mail endpoint.
|
|
91
|
+
*
|
|
92
|
+
* This is a floor, not a fix. Which tools a run should carry is the operator's
|
|
93
|
+
* choice -- the composer popout switches sources and individual tools off per
|
|
94
|
+
* conversation -- and silently trimming the tail is only ever better than
|
|
95
|
+
* failing outright. */
|
|
96
|
+
const defsFor = (list) => list.map((t) => ({
|
|
48
97
|
type: 'function',
|
|
49
98
|
function: { name: t.name, description: t.description, parameters: t.parameters },
|
|
50
99
|
}));
|
|
51
|
-
|
|
100
|
+
let toolDefs = defsFor(sent);
|
|
101
|
+
/* Dispatch from the SAME trimmed set. A tool that was not advertised must not
|
|
102
|
+
* be callable either, or a model that guessed a name would reach something
|
|
103
|
+
* the request never offered -- which includes a deferred tool nobody loaded. */
|
|
104
|
+
let toolByName = new Map(sent.map((t) => [t.name, t]));
|
|
52
105
|
// 'deferred' strategy only, and CRITICAL to the design: compact the INCOMING
|
|
53
106
|
// history too, not just what this run produces. Without this, a result that
|
|
54
107
|
// was sent full and never got a "subsequent call" WITHIN the run that
|
|
@@ -60,7 +113,10 @@ export async function runAgent(args) {
|
|
|
60
113
|
// first call, the cheapest place for it (a fresh prefix on a call about to
|
|
61
114
|
// happen anyway, rather than an extra rewrite mid-run).
|
|
62
115
|
if (compressionStrategy === 'deferred' && compression && compression.mode !== 'off' && toolCtx.recall) {
|
|
63
|
-
|
|
116
|
+
// Every tool the run knows, deferred included: an old result from a tool not
|
|
117
|
+
// loaded yet still needs its `noOffload` flag read, not guessed.
|
|
118
|
+
const known = new Map([...eager, ...deferred].map((t) => [t.name, t]));
|
|
119
|
+
await compactIncomingOffloads(messages, known, compression, toolCtx.recall, emit);
|
|
64
120
|
}
|
|
65
121
|
const usage = { promptTokens: 0, completionTokens: 0 };
|
|
66
122
|
let text = '';
|
|
@@ -96,6 +152,13 @@ export async function runAgent(args) {
|
|
|
96
152
|
// a bounded backoff retry (same request, same messages — the model never sees
|
|
97
153
|
// the blip). A fatal failure (auth/abort) or an exhausted retry budget ends the
|
|
98
154
|
// run. Every heal is surfaced for the UI + the learning corpus.
|
|
155
|
+
/* REBUILT PER MODEL CALL when tools are deferred. A `tool_search` on the
|
|
156
|
+
* previous turn loaded tools; this is the request that must carry them. */
|
|
157
|
+
if (loader) {
|
|
158
|
+
sent = activeTools();
|
|
159
|
+
toolDefs = defsFor(sent);
|
|
160
|
+
toolByName = new Map(sent.map((t) => [t.name, t]));
|
|
161
|
+
}
|
|
99
162
|
let streamed;
|
|
100
163
|
let streamFail = null;
|
|
101
164
|
const model = args.getModel?.() ?? args.model;
|
|
@@ -256,6 +319,8 @@ export async function runAgent(args) {
|
|
|
256
319
|
emit({ type: 'tool-result', id: call.id, name: call.name, result: 'unknown tool', isError: true });
|
|
257
320
|
continue;
|
|
258
321
|
}
|
|
322
|
+
// A loaded tool in use is the last one eviction should take.
|
|
323
|
+
loader?.touch(tool.name);
|
|
259
324
|
// Policy address (namespace:name) so guardrail/permission globs can target
|
|
260
325
|
// a whole namespace (fs:*) or one tool, while bare names still match.
|
|
261
326
|
const address = toolAddress(tool);
|
|
@@ -286,7 +351,7 @@ export async function runAgent(args) {
|
|
|
286
351
|
}
|
|
287
352
|
// Permission gate: resolve oversight level, ask the user when required.
|
|
288
353
|
if (permission) {
|
|
289
|
-
const decision = await permission.check({ name: tool.name, address, mutates: tool.mutates, permission: tool.permission }, parsed);
|
|
354
|
+
const decision = await permission.check({ name: tool.name, address, mutates: tool.mutates, permission: tool.permission, roomSafe: tool.roomSafe }, parsed);
|
|
290
355
|
emit({ type: 'permission', tool: tool.name, decision });
|
|
291
356
|
if (decision === 'deny') {
|
|
292
357
|
const denialMsg = args.describePermissionDenial?.(tool.name)
|
package/dist/core/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../guardrail/builtins.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,MAW7B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../guardrail/builtins.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,MAW7B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,EAAE,MA+B9B,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,EAAE,MAU/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAInD,CAAC"}
|
|
@@ -28,17 +28,20 @@ export const READ_ONLY_POLICY = {
|
|
|
28
28
|
// Shell execution (sidecar_shell_exec, address shell:sidecar_shell_exec) is a
|
|
29
29
|
// side effect — denied outright under read-only, regardless of its own permission.
|
|
30
30
|
'shell:*',
|
|
31
|
-
'memory:save_memory', 'memory:kv_set',
|
|
31
|
+
'memory:save_memory', 'memory:kv_set', 'memory:forget_memory',
|
|
32
32
|
'system:*',
|
|
33
33
|
],
|
|
34
34
|
},
|
|
35
35
|
permissions: {
|
|
36
36
|
'fs:write_file': 'deny', 'fs:create_file': 'deny', 'fs:delete_file': 'deny', 'fs:rename_file': 'deny',
|
|
37
|
-
'memory:save_memory': 'deny', 'memory:kv_set': 'deny',
|
|
37
|
+
'memory:save_memory': 'deny', 'memory:kv_set': 'deny', 'memory:forget_memory': 'deny',
|
|
38
38
|
'system:*': 'deny',
|
|
39
39
|
},
|
|
40
40
|
// Backstop: any other mutating tool (a dynamic MCP/skill write the deny list
|
|
41
41
|
// can't name) is refused too, while unknown read-only tools still run.
|
|
42
|
+
// NOT a backstop for own-plane tools any more: `resolveBaseLevel` allows a
|
|
43
|
+
// `roomSafe` mutating tool above this line, so every memory write this policy
|
|
44
|
+
// means to refuse has to be NAMED above. That is why forget_memory is listed.
|
|
42
45
|
mutatingDefault: 'deny',
|
|
43
46
|
};
|
|
44
47
|
/** Unattended: everything runs without prompting, except harness self-config. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../guardrail/builtins.ts"],"names":[],"mappings":"AAQA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAW;IACrC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,6DAA6D;IAC1E,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE;QACX,qBAAqB,EAAE,OAAO,EAAE,8DAA8D;QAC9F,UAAU,EAAE,MAAM,EAAE,gDAAgD;KACrE;IACD,+EAA+E;CAChF,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,4DAA4D;IACzE,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE;QACL,IAAI,EAAE;YACJ,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB;YACrE,gFAAgF;YAChF,mFAAmF;YACnF,uEAAuE;YACvE,0BAA0B;YAC1B,8EAA8E;YAC9E,mFAAmF;YACnF,SAAS;YACT,oBAAoB,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../guardrail/builtins.ts"],"names":[],"mappings":"AAQA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAW;IACrC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,6DAA6D;IAC1E,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE;QACX,qBAAqB,EAAE,OAAO,EAAE,8DAA8D;QAC9F,UAAU,EAAE,MAAM,EAAE,gDAAgD;KACrE;IACD,+EAA+E;CAChF,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,4DAA4D;IACzE,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE;QACL,IAAI,EAAE;YACJ,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB;YACrE,gFAAgF;YAChF,mFAAmF;YACnF,uEAAuE;YACvE,0BAA0B;YAC1B,8EAA8E;YAC9E,mFAAmF;YACnF,SAAS;YACT,oBAAoB,EAAE,eAAe,EAAE,sBAAsB;YAC7D,UAAU;SACX;KACF;IACD,WAAW,EAAE;QACX,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;QACrG,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM;QACrF,UAAU,EAAE,MAAM;KACnB;IACD,6EAA6E;IAC7E,uEAAuE;IACvE,2EAA2E;IAC3E,8EAA8E;IAC9E,8EAA8E;IAC9E,eAAe,EAAE,MAAM;CACxB,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAW;IACvC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,iFAAiF;IAC9F,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE;QACX,UAAU,EAAE,KAAK,EAAE,0DAA0D;KAC9E;IACD,iBAAiB,EAAE,OAAO;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,QAAQ,EAAE,eAAe;IACzB,WAAW,EAAE,gBAAgB;IAC7B,UAAU,EAAE,iBAAiB;CAC9B,CAAC"}
|
|
@@ -9,6 +9,12 @@ export interface PermissionSubject {
|
|
|
9
9
|
mutates?: boolean;
|
|
10
10
|
/** Tool-declared default level (beats the heuristic, loses to policy). */
|
|
11
11
|
permission?: PermissionLevel;
|
|
12
|
+
/** Writes nothing outside the agent's own memory plane. The own-plane
|
|
13
|
+
* predicate -- see `AgentTool.roomSafe` (packages/protocol/ports.ts) for the
|
|
14
|
+
* rule that governs when it may be set. Optional, and `undefined` means NOT
|
|
15
|
+
* own-plane: a caller that builds a subject without a tool in hand gets the
|
|
16
|
+
* strict answer, which is the direction this must fail in. */
|
|
17
|
+
roomSafe?: boolean;
|
|
12
18
|
}
|
|
13
19
|
export interface PermissionPrompt {
|
|
14
20
|
ask(req: {
|
|
@@ -42,8 +48,16 @@ export declare class PermissionService {
|
|
|
42
48
|
check(tool: PermissionSubject, input: unknown): Promise<PermissionDecision>;
|
|
43
49
|
/**
|
|
44
50
|
* Resolve the effective level. Base precedence (highest first):
|
|
45
|
-
* policy.permissions glob
|
|
46
|
-
*
|
|
51
|
+
* policy.permissions glob
|
|
52
|
+
* > own-plane exemption (roomSafe && mutates)
|
|
53
|
+
* > policy.mutatingDefault (mutating tools only)
|
|
54
|
+
* > tool.permission
|
|
55
|
+
* > policy.defaultPermission
|
|
56
|
+
* > the mutates heuristic
|
|
57
|
+
* Then the ceiling clamps to the more restrictive of base and ceiling -- a
|
|
58
|
+
* ceiling only ever RESTRICTS, so an `allow` in it cannot raise a `deny` base.
|
|
59
|
+
* Keep this list in step with `resolveBaseLevel` below; position is the design
|
|
60
|
+
* there, so a stale summary here is worse than none.
|
|
47
61
|
*/
|
|
48
62
|
resolveLevel(tool: PermissionSubject): PermissionLevel;
|
|
49
63
|
private resolveBaseLevel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-service.d.ts","sourceRoot":"","sources":["../../guardrail/permission-service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAExG,qEAAqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb;uFACmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"permission-service.d.ts","sourceRoot":"","sources":["../../guardrail/permission-service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAExG,qEAAqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb;uFACmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;;;kEAI8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,sDAAsD;IACtD,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAgCD,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,eAAe,CAEvF;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAkB;IACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAkB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAEtC,IAAI,EAAE,wBAAwB;IAQ1C,2FAA2F;IAC3F,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIlC,KAAK,IAAI,IAAI;IAIP,KAAK,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKjF;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,eAAe;IAItD,OAAO,CAAC,gBAAgB;IA0CxB,OAAO,CAAC,mBAAmB;YAQb,MAAM;CAQrB"}
|
|
@@ -99,8 +99,16 @@ export class PermissionService {
|
|
|
99
99
|
}
|
|
100
100
|
/**
|
|
101
101
|
* Resolve the effective level. Base precedence (highest first):
|
|
102
|
-
* policy.permissions glob
|
|
103
|
-
*
|
|
102
|
+
* policy.permissions glob
|
|
103
|
+
* > own-plane exemption (roomSafe && mutates)
|
|
104
|
+
* > policy.mutatingDefault (mutating tools only)
|
|
105
|
+
* > tool.permission
|
|
106
|
+
* > policy.defaultPermission
|
|
107
|
+
* > the mutates heuristic
|
|
108
|
+
* Then the ceiling clamps to the more restrictive of base and ceiling -- a
|
|
109
|
+
* ceiling only ever RESTRICTS, so an `allow` in it cannot raise a `deny` base.
|
|
110
|
+
* Keep this list in step with `resolveBaseLevel` below; position is the design
|
|
111
|
+
* there, so a stale summary here is worse than none.
|
|
104
112
|
*/
|
|
105
113
|
resolveLevel(tool) {
|
|
106
114
|
return mostRestrictive(this.resolveBaseLevel(tool), this.resolveCeilingLevel(tool));
|
|
@@ -109,6 +117,36 @@ export class PermissionService {
|
|
|
109
117
|
const matched = this.policy.permissions && matchLevel(tool, this.policy.permissions);
|
|
110
118
|
if (matched)
|
|
111
119
|
return matched;
|
|
120
|
+
/* AN OWN-PLANE WRITE IS NOT WHAT `mutatingDefault` EXISTS TO STOP.
|
|
121
|
+
*
|
|
122
|
+
* `mutatingDefault` is a backstop: a policy says "no side effects" once and
|
|
123
|
+
* catches tools it never named. A write into the agent's own memory plane is
|
|
124
|
+
* not a side effect in that sense, and denying it is the silent failure
|
|
125
|
+
* where an agent cannot remember anything.
|
|
126
|
+
*
|
|
127
|
+
* HOW STRONG THAT CONTAINMENT IS DEPENDS ON THE HOST, so do not read the
|
|
128
|
+
* name as a guarantee. For a CREW agent it is exact: `crewMemoryProvider`
|
|
129
|
+
* (packages/crew/memory.ts) roots the store at `crew/<agent>/memory` and
|
|
130
|
+
* ignores the caller's scope, so the write cannot reach the workspace,
|
|
131
|
+
* another agent, or the daemon. On the APP surfaces it is weaker:
|
|
132
|
+
* `memoryLocation` (src/prompd/memory/location.ts) resolves scope
|
|
133
|
+
* "workspace" to `.prompd/memory/` in the active source and "global" to the
|
|
134
|
+
* shared config workspace, and `scope` is a REQUIRED, model-chosen argument
|
|
135
|
+
* on save_memory. So there the plane sits inside the user's project tree and
|
|
136
|
+
* is shared between agents. That is a pre-existing property of those hosts,
|
|
137
|
+
* not something this rung created -- but this rung is what makes it govern a
|
|
138
|
+
* permission, so it is written down here instead of implied.
|
|
139
|
+
*
|
|
140
|
+
* POSITION IS THE DESIGN. Above the `permissions` match this would override
|
|
141
|
+
* an operator's explicit decision; below the backstop it would never fire.
|
|
142
|
+
* Here it means exactly: allowed unless a policy names it.
|
|
143
|
+
*
|
|
144
|
+
* A CONSEQUENCE, NOT A SIDE NOTE: for this class of tool `mutatingDefault`
|
|
145
|
+
* stops being a backstop and becomes a default. Any policy that relied on
|
|
146
|
+
* it to catch an own-plane tool must now name that tool -- which is why
|
|
147
|
+
* READ_ONLY_POLICY gained `memory:forget_memory` in the same change. */
|
|
148
|
+
if (tool.roomSafe && tool.mutates)
|
|
149
|
+
return 'allow';
|
|
112
150
|
// A policy's mutating backstop outranks a tool's own declared default, so a
|
|
113
151
|
// mutating tool can't downgrade a strict policy's "deny side effects" floor to
|
|
114
152
|
// ask/allow via its self-declared `permission` (e.g. sidecar_shell_exec's permission:'ask').
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-service.js","sourceRoot":"","sources":["../../guardrail/permission-service.ts"],"names":[],"mappings":"AAAA;;;;;wEAKwE;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"permission-service.js","sourceRoot":"","sources":["../../guardrail/permission-service.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts/index.d.ts
CHANGED
|
@@ -8,13 +8,22 @@ export declare function compilePromptBody(body: string, params?: Record<string,
|
|
|
8
8
|
* per-filetype system prompt can extend systems/system-base.md. Falls back to the
|
|
9
9
|
* raw stored body on any compile error (the system prompt must always be text).
|
|
10
10
|
*/
|
|
11
|
-
export declare function compileConfigTemplate(path: string, params: Record<string, unknown
|
|
11
|
+
export declare function compileConfigTemplate(path: string, params: Record<string, unknown>, source?: string): Promise<string>;
|
|
12
12
|
export interface ComposeArgs {
|
|
13
|
+
/** Which installed skills may inject their instructions into THIS prompt.
|
|
14
|
+
* Omitted = every enabled skill. The chat surfaces pass a per-conversation
|
|
15
|
+
* filter so a skill switched off in the composer popout stops reaching the
|
|
16
|
+
* system prompt -- a skill brings a prompt, not tools, so `toolDeny` cannot
|
|
17
|
+
* express it. */
|
|
18
|
+
skillAllow?: (name: string) => boolean;
|
|
13
19
|
/** Selected persona id (personas/<id>.md in the config workspace), or '' for none. */
|
|
14
20
|
persona?: string;
|
|
15
21
|
/** Config path of the system template to compile (defaults to the base). A
|
|
16
22
|
* per-filetype prompt (systems/system-<ext>.md) inherits the base. */
|
|
17
23
|
systemPath?: string;
|
|
24
|
+
/** The system template's source text, when it does not live in the config
|
|
25
|
+
* workspace (a project prompt). Compiled under `systemPath`. */
|
|
26
|
+
systemText?: string;
|
|
18
27
|
/** Active mode id (auto/edit/plan/brainstorm) — maps to modes/<mode>.md. */
|
|
19
28
|
mode: string;
|
|
20
29
|
/** Pre-built context block (editor file / selection / compiled output). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../prompts/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;iFACiF;AACjF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe3G;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../prompts/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;iFACiF;AACjF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe3G;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAa3H;AAED,MAAM,WAAW,WAAW;IAC1B;;;;sBAIkB;IAClB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;0EACsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;oEACgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;qDACiD;IACjD,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;uFACmF;IACnF,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAOD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAyC3E;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAO3E"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -33,9 +33,11 @@ export async function compilePromptBody(body, params = {}) {
|
|
|
33
33
|
* per-filetype system prompt can extend systems/system-base.md. Falls back to the
|
|
34
34
|
* raw stored body on any compile error (the system prompt must always be text).
|
|
35
35
|
*/
|
|
36
|
-
export async function compileConfigTemplate(path, params) {
|
|
36
|
+
export async function compileConfigTemplate(path, params, source) {
|
|
37
37
|
const p = normalizeFilePath(path);
|
|
38
|
-
|
|
38
|
+
// `source` is a prompt read from OUTSIDE the config workspace (a project's
|
|
39
|
+
// .corenel/systems/). It is compiled under `path` so inherits still resolve.
|
|
40
|
+
const liveSrc = source ?? await readConfig(p);
|
|
39
41
|
if (!liveSrc.trim())
|
|
40
42
|
return '';
|
|
41
43
|
try {
|
|
@@ -79,7 +81,7 @@ export async function composeAgentSystem(args) {
|
|
|
79
81
|
const tool_guidance = toolGuidanceRaw.replace(/<!--[\s\S]*?-->/g, '').trim();
|
|
80
82
|
// Enabled skills inject their SKILL.md as an extra context block (with a gated-
|
|
81
83
|
// scripts note). Read-only + best-effort — a skills failure never breaks compose.
|
|
82
|
-
const skillsBlock = await enabledSkillInstructions().catch(() => '');
|
|
84
|
+
const skillsBlock = await enabledSkillInstructions(args.skillAllow).catch(() => '');
|
|
83
85
|
// Merged memory index (both scopes) — a host-provided hook so the agent can see
|
|
84
86
|
// what it has saved. Best-effort: a memory read failure never breaks compose.
|
|
85
87
|
const memoryIdx = args.memoryIndex ? await args.memoryIndex().catch(() => '') : '';
|
|
@@ -98,7 +100,7 @@ export async function composeAgentSystem(args) {
|
|
|
98
100
|
tools: args.toolsText ?? formatTools(args.tools),
|
|
99
101
|
file_context: [(args.contextText || '').trim(), memoryBlock, skillsBlock].filter(Boolean).join('\n\n'),
|
|
100
102
|
...(args.params || {}),
|
|
101
|
-
});
|
|
103
|
+
}, args.systemText);
|
|
102
104
|
}
|
|
103
105
|
/**
|
|
104
106
|
* Compile the isolated help-chat system prompt: the site index is generated from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../prompts/index.ts"],"names":[],"mappings":"AAAA;;mEAEmE;AACnE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;iFACiF;AACjF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,SAAkC,EAAE;IACxF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,0EAA0E;QAC1E,2EAA2E;QAC3E,2EAA2E;QAC3E,2DAA2D;QAC3D,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uDAAuD,IAAI,EAAE,CAAC;QACrG,MAAM,CAAC,GAAG,MAAM,UAAU,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY,EAAE,MAA+B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type SystemPromptOrigin = 'project' | 'host';
|
|
2
|
+
export interface SystemPromptEntry {
|
|
3
|
+
/** `<origin>:<file>` -- what a per-chat selection stores. */
|
|
4
|
+
id: string;
|
|
5
|
+
/** Filename, e.g. `api-review.md` -- what a bare selection matches. */
|
|
6
|
+
file: string;
|
|
7
|
+
/** Frontmatter `name`, else the filename (the rule personas use). */
|
|
8
|
+
label: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
origin: SystemPromptOrigin;
|
|
11
|
+
/** Path within its own root's FileService. */
|
|
12
|
+
path: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const BASE_SYSTEM_FILE = "system-base.md";
|
|
15
|
+
/**
|
|
16
|
+
* The entry a selection names, or null when it names nothing available.
|
|
17
|
+
*
|
|
18
|
+
* An id with an origin is exact: `project:api-review.md` in a different project
|
|
19
|
+
* is gone, not quietly swapped for a host file of the same name. A bare filename
|
|
20
|
+
* takes the project's copy over the host's, matching the
|
|
21
|
+
* CORENEL.md > AGENTS.md > CLAUDE.md rule for project instructions.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveSystemPrompt(selection: string | null | undefined, entries: SystemPromptEntry[]): SystemPromptEntry | null;
|
|
24
|
+
/** A selection's filename, for display: `project:api-review.md` -> `api-review.md`. */
|
|
25
|
+
export declare function selectionFile(selection: string): string;
|
|
26
|
+
//# sourceMappingURL=systemPromptSelection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"systemPromptSelection.d.ts","sourceRoot":"","sources":["../../prompts/systemPromptSelection.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,EAAE,iBAAiB,EAAE,GAC3B,iBAAiB,GAAG,IAAI,CAQ1B;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* The pure half of system prompt selection: the entry shape and how a
|
|
2
|
+
* selection resolves. No imports, so the context drawer -- rendered with every
|
|
3
|
+
* chat -- can resolve a selection without pulling the config loader and its
|
|
4
|
+
* shipped defaults into the render path. Discovery lives in systemPrompts.ts. */
|
|
5
|
+
export const BASE_SYSTEM_FILE = 'system-base.md';
|
|
6
|
+
/**
|
|
7
|
+
* The entry a selection names, or null when it names nothing available.
|
|
8
|
+
*
|
|
9
|
+
* An id with an origin is exact: `project:api-review.md` in a different project
|
|
10
|
+
* is gone, not quietly swapped for a host file of the same name. A bare filename
|
|
11
|
+
* takes the project's copy over the host's, matching the
|
|
12
|
+
* CORENEL.md > AGENTS.md > CLAUDE.md rule for project instructions.
|
|
13
|
+
*/
|
|
14
|
+
export function resolveSystemPrompt(selection, entries) {
|
|
15
|
+
if (!selection)
|
|
16
|
+
return null;
|
|
17
|
+
const exact = entries.find((e) => e.id === selection);
|
|
18
|
+
if (exact)
|
|
19
|
+
return exact;
|
|
20
|
+
if (/^(project|host):/.test(selection))
|
|
21
|
+
return null;
|
|
22
|
+
return entries.find((e) => e.origin === 'project' && e.file === selection)
|
|
23
|
+
?? entries.find((e) => e.origin === 'host' && e.file === selection)
|
|
24
|
+
?? null;
|
|
25
|
+
}
|
|
26
|
+
/** A selection's filename, for display: `project:api-review.md` -> `api-review.md`. */
|
|
27
|
+
export function selectionFile(selection) {
|
|
28
|
+
return selection.replace(/^(project|host):/, '');
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=systemPromptSelection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"systemPromptSelection.js","sourceRoot":"","sources":["../../prompts/systemPromptSelection.ts"],"names":[],"mappings":"AAAA;;;iFAGiF;AAiBjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAoC,EACpC,OAA4B;IAE5B,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IACtD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;WACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;WAChE,IAAI,CAAC;AACZ,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,OAAO,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { FileService } from '@corenel/protocol';
|
|
2
|
+
import type { SystemPromptEntry } from './systemPromptSelection';
|
|
3
|
+
export { resolveSystemPrompt, selectionFile, BASE_SYSTEM_FILE } from './systemPromptSelection';
|
|
4
|
+
export type { SystemPromptEntry, SystemPromptOrigin } from './systemPromptSelection';
|
|
5
|
+
/** Every selectable system prompt: project entries first, then host. */
|
|
6
|
+
export declare function listSystemPrompts(opts: {
|
|
7
|
+
/** The open project, or null when none is. */
|
|
8
|
+
project: FileService | null;
|
|
9
|
+
/** The project's state directory name (`.corenel` / `.prompd`). */
|
|
10
|
+
projectDir: string;
|
|
11
|
+
}): Promise<SystemPromptEntry[]>;
|
|
12
|
+
/**
|
|
13
|
+
* What composeAgentSystem needs to compile an entry.
|
|
14
|
+
*
|
|
15
|
+
* A host prompt is compiled from the config workspace by path, as every system
|
|
16
|
+
* prompt always has been. A project prompt lives outside it, so its TEXT is
|
|
17
|
+
* read here and compiled under `systems/<file>` -- which is what lets it
|
|
18
|
+
* `inherits: system-base.md` exactly as a host prompt would.
|
|
19
|
+
*/
|
|
20
|
+
export declare function readSystemPromptSource(entry: SystemPromptEntry, project: FileService | null): Promise<{
|
|
21
|
+
systemPath: string;
|
|
22
|
+
systemText?: string;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=systemPrompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"systemPrompts.d.ts","sourceRoot":"","sources":["../../prompts/systemPrompts.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,yBAAyB,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA+BrF,wEAAwE;AACxE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,8CAA8C;IAC9C,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAc/B;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,WAAW,GAAG,IAAI,GAC1B,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAItD"}
|