@introspection-ai/recipes 0.13.0 → 0.14.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/README.md +45 -58
- package/dist/{agent-tool.d.ts → agents.d.ts} +4 -1
- package/dist/agents.d.ts.map +1 -0
- package/dist/{agent-tool.js → agents.js} +1 -1
- package/dist/agents.js.map +1 -0
- package/dist/api/extensions.d.ts +3 -0
- package/dist/api/extensions.d.ts.map +1 -0
- package/dist/api/extensions.js +2 -0
- package/dist/api/extensions.js.map +1 -0
- package/dist/api/mcp.d.ts +4 -0
- package/dist/api/mcp.d.ts.map +1 -0
- package/dist/api/mcp.js +2 -0
- package/dist/api/mcp.js.map +1 -0
- package/dist/api/session.d.ts +3 -0
- package/dist/api/session.d.ts.map +1 -0
- package/dist/api/session.js +2 -0
- package/dist/api/session.js.map +1 -0
- package/dist/child-agent.d.ts +5 -4
- package/dist/child-agent.d.ts.map +1 -1
- package/dist/child-agent.js +26 -117
- package/dist/child-agent.js.map +1 -1
- package/dist/child-session.d.ts +23 -0
- package/dist/child-session.d.ts.map +1 -0
- package/dist/child-session.js +48 -0
- package/dist/child-session.js.map +1 -0
- package/dist/extensions.d.ts +29 -0
- package/dist/extensions.d.ts.map +1 -0
- package/dist/extensions.js +119 -0
- package/dist/extensions.js.map +1 -0
- package/dist/index.d.ts +4 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -13
- package/dist/index.js.map +1 -1
- package/dist/inspect.d.ts +38 -5
- package/dist/inspect.d.ts.map +1 -1
- package/dist/inspect.js +92 -41
- package/dist/inspect.js.map +1 -1
- package/dist/interactions.d.ts +18 -2
- package/dist/interactions.d.ts.map +1 -1
- package/dist/interactions.js +41 -10
- package/dist/interactions.js.map +1 -1
- package/dist/mcp-catalog.d.ts +1 -0
- package/dist/mcp-catalog.d.ts.map +1 -1
- package/dist/mcp-catalog.js +14 -6
- package/dist/mcp-catalog.js.map +1 -1
- package/dist/mcp-chunks/auth-command-ZLGYIEUY.js +273 -0
- package/dist/mcp-chunks/call-arguments-LU3W6D3K.js +13 -0
- package/dist/mcp-chunks/call-command-LKTKSYTH.js +612 -0
- package/dist/mcp-chunks/chunk-2U4BSDC4.js +3951 -0
- package/dist/mcp-chunks/chunk-2XL7MG7R.js +272 -0
- package/dist/mcp-chunks/chunk-3BJA27PY.js +2321 -0
- package/dist/mcp-chunks/chunk-4SQKWYFF.js +15 -0
- package/dist/mcp-chunks/chunk-5QOSCSQB.js +290 -0
- package/dist/mcp-chunks/chunk-6W5QFASN.js +77 -0
- package/dist/mcp-chunks/chunk-6XCZGU3G.js +1004 -0
- package/dist/mcp-chunks/chunk-7FHEBT5G.js +149 -0
- package/dist/mcp-chunks/chunk-7KA2VJVZ.js +114 -0
- package/dist/mcp-chunks/chunk-7UDVSOOF.js +138 -0
- package/dist/mcp-chunks/chunk-BNV3TPE4.js +66 -0
- package/dist/mcp-chunks/chunk-BTLAWHTA.js +129 -0
- package/dist/mcp-chunks/chunk-BV56DXPW.js +13 -0
- package/dist/mcp-chunks/chunk-BWHIA4PC.js +90 -0
- package/dist/mcp-chunks/chunk-BZIQOWE6.js +267 -0
- package/dist/mcp-chunks/chunk-D3MRAZ6H.js +16140 -0
- package/dist/mcp-chunks/chunk-DHBE7UBH.js +750 -0
- package/dist/mcp-chunks/chunk-E22DYOW5.js +251 -0
- package/dist/mcp-chunks/chunk-ECIVB7P4.js +139 -0
- package/dist/mcp-chunks/chunk-HKRJ6O36.js +1076 -0
- package/dist/mcp-chunks/chunk-IABRYROW.js +44 -0
- package/dist/mcp-chunks/chunk-J6LYIZXN.js +45 -0
- package/dist/mcp-chunks/chunk-L7NTQVYN.js +161 -0
- package/dist/mcp-chunks/chunk-LEZSACDE.js +141 -0
- package/dist/mcp-chunks/chunk-LKIBAYKU.js +208 -0
- package/dist/mcp-chunks/chunk-LNH5LAJD.js +152 -0
- package/dist/mcp-chunks/chunk-LQQEYD76.js +124 -0
- package/dist/mcp-chunks/chunk-LRKZP7DJ.js +47 -0
- package/dist/mcp-chunks/chunk-LS7PMWSR.js +109 -0
- package/dist/mcp-chunks/chunk-M3TPODXI.js +95 -0
- package/dist/mcp-chunks/chunk-MZ2NARG7.js +400 -0
- package/dist/mcp-chunks/chunk-N46NEFAF.js +45 -0
- package/dist/mcp-chunks/chunk-NNOEGEUZ.js +17273 -0
- package/dist/mcp-chunks/chunk-NRAJX5E4.js +69 -0
- package/dist/mcp-chunks/chunk-P3PSC54P.js +869 -0
- package/dist/mcp-chunks/chunk-PIIYJR44.js +6341 -0
- package/dist/mcp-chunks/chunk-PWYFKGKG.js +385 -0
- package/dist/mcp-chunks/chunk-SJCCBNZ4.js +45 -0
- package/dist/mcp-chunks/chunk-TATVT5IT.js +194 -0
- package/dist/mcp-chunks/chunk-TEUKFFQL.js +29 -0
- package/dist/mcp-chunks/chunk-UKYNQGNE.js +150 -0
- package/dist/mcp-chunks/chunk-UNKB4SBV.js +37 -0
- package/dist/mcp-chunks/chunk-WD6BOD24.js +138 -0
- package/dist/mcp-chunks/chunk-WQJZMCJN.js +73 -0
- package/dist/mcp-chunks/chunk-XANPGTLI.js +364 -0
- package/dist/mcp-chunks/chunk-XQK2JSW4.js +35 -0
- package/dist/mcp-chunks/chunk-YHQUTU6L.js +571 -0
- package/dist/mcp-chunks/chunk-YVZKMV5H.js +57 -0
- package/dist/mcp-chunks/cli-UV4QJZZM.js +929 -0
- package/dist/mcp-chunks/client-S7RQUG5U.js +13 -0
- package/dist/mcp-chunks/config-command-NLAGKID5.js +1101 -0
- package/dist/mcp-chunks/daemon-command-U242Z6VY.js +26 -0
- package/dist/mcp-chunks/dist-LK3SHAMX.js +6478 -0
- package/dist/mcp-chunks/emit-ts-command-VBXVXO6V.js +386 -0
- package/dist/mcp-chunks/generate-cli-runner-6CAZZA3P.js +1426 -0
- package/dist/mcp-chunks/inspect-cli-command-3ZORTOR7.js +111 -0
- package/dist/mcp-chunks/launch-YKRXHXJI.js +10 -0
- package/dist/mcp-chunks/lifecycle-XVKRHPH3.js +16 -0
- package/dist/mcp-chunks/list-command-2MEGGNFQ.js +4190 -0
- package/dist/mcp-chunks/output-utils-NKESLAJ6.js +12 -0
- package/dist/mcp-chunks/prompt-B1Yc1NPt-VGOTWJMN.js +918 -0
- package/dist/mcp-chunks/record-command-YXHTTTT5.js +17 -0
- package/dist/mcp-chunks/replay-command-25HJ6AQU.js +85 -0
- package/dist/mcp-chunks/resource-command-OO4NYF5C.js +97 -0
- package/dist/mcp-chunks/result-utils-MOHHLNM7.js +15 -0
- package/dist/mcp-chunks/runtime-5WJ3G25Y.js +33 -0
- package/dist/mcp-chunks/runtime-wrapper-RPWDIDBF.js +10 -0
- package/dist/mcp-chunks/serve-command-DHXJZMMN.js +3302 -0
- package/dist/mcp-chunks/timeouts-W2XWCCXR.js +18 -0
- package/dist/mcp-chunks/vault-command-PIYIUEZL.js +154 -0
- package/dist/mcp-daemon-client.d.ts +6 -1
- package/dist/mcp-daemon-client.d.ts.map +1 -1
- package/dist/mcp-daemon-client.js +119 -2
- package/dist/mcp-daemon-client.js.map +1 -1
- package/dist/mcp-daemon-protocol.d.ts +18 -1
- package/dist/mcp-daemon-protocol.d.ts.map +1 -1
- package/dist/mcp-daemon-protocol.js +31 -0
- package/dist/mcp-daemon-protocol.js.map +1 -1
- package/dist/mcp-daemon.js +169 -76602
- package/dist/mcp-daemon.js.map +1 -1
- package/dist/mcp-policy.d.ts +11 -0
- package/dist/mcp-policy.d.ts.map +1 -0
- package/dist/mcp-policy.js +27 -0
- package/dist/mcp-policy.js.map +1 -0
- package/dist/mcp-run-worker.js +38 -76540
- package/dist/mcp-tools.d.ts +39 -0
- package/dist/mcp-tools.d.ts.map +1 -0
- package/dist/mcp-tools.js +493 -0
- package/dist/mcp-tools.js.map +1 -0
- package/dist/mcp.d.ts +21 -9
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +101 -31
- package/dist/mcp.js.map +1 -1
- package/dist/model-binding.d.ts +39 -0
- package/dist/model-binding.d.ts.map +1 -0
- package/dist/model-binding.js +103 -0
- package/dist/model-binding.js.map +1 -0
- package/dist/pi-extension.d.ts +2 -22
- package/dist/pi-extension.d.ts.map +1 -1
- package/dist/pi-extension.js +296 -71
- package/dist/pi-extension.js.map +1 -1
- package/dist/recipe/resolve.d.ts +43 -20
- package/dist/recipe/resolve.d.ts.map +1 -1
- package/dist/recipe/resolve.js +215 -70
- package/dist/recipe/resolve.js.map +1 -1
- package/dist/recipe-agent.d.ts +24 -27
- package/dist/recipe-agent.d.ts.map +1 -1
- package/dist/recipe-agent.js +278 -230
- package/dist/recipe-agent.js.map +1 -1
- package/dist/recipe-check.d.ts +17 -0
- package/dist/recipe-check.d.ts.map +1 -0
- package/dist/recipe-check.js +258 -0
- package/dist/recipe-check.js.map +1 -0
- package/dist/recipe-extensions.d.ts.map +1 -1
- package/dist/recipe-extensions.js +0 -3
- package/dist/recipe-extensions.js.map +1 -1
- package/dist/recipe-model.d.ts +3 -1
- package/dist/recipe-model.d.ts.map +1 -1
- package/dist/recipe-model.js +15 -12
- package/dist/recipe-model.js.map +1 -1
- package/dist/recipe-package.d.ts +6 -28
- package/dist/recipe-package.d.ts.map +1 -1
- package/dist/recipe-package.js +248 -191
- package/dist/recipe-package.js.map +1 -1
- package/dist/recipe-skills.d.ts.map +1 -1
- package/dist/recipe-skills.js +42 -29
- package/dist/recipe-skills.js.map +1 -1
- package/dist/run-controller.d.ts +10 -9
- package/dist/run-controller.d.ts.map +1 -1
- package/dist/run-controller.js +28 -21
- package/dist/run-controller.js.map +1 -1
- package/dist/session.d.ts +40 -53
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +312 -173
- package/dist/session.js.map +1 -1
- package/dist/test-utils.d.ts +7 -7
- package/dist/test-utils.d.ts.map +1 -1
- package/dist/test-utils.js +32 -15
- package/dist/test-utils.js.map +1 -1
- package/docs/agent-composition.md +41 -35
- package/docs/host-api.md +201 -0
- package/docs/index.md +8 -14
- package/docs/interactions.md +12 -11
- package/docs/mcp-auth.md +6 -6
- package/docs/mcp-configuration.md +72 -24
- package/docs/pi-extension.md +39 -11
- package/docs/recipe-flow.md +9 -9
- package/docs/recipe-format.md +90 -41
- package/package.json +23 -17
- package/vendor/mcp-client/darwin-arm64/mcp-client +0 -0
- package/vendor/mcp-client/darwin-x64/mcp-client +0 -0
- package/vendor/mcp-client/linux-arm64/mcp-client +0 -0
- package/vendor/recipe-check/darwin-arm64/recipe-check +0 -0
- package/vendor/recipe-check/darwin-x64/recipe-check +0 -0
- package/vendor/recipe-check/linux-arm64/recipe-check +0 -0
- package/vendor/recipe-check/linux-x64/recipe-check +0 -0
- package/vendor/recipe-check/linux-x64-musl/recipe-check +0 -0
- package/vendor/recipe-check/win32-x64/recipe-check.exe +0 -0
- package/dist/agent-tool.d.ts.map +0 -1
- package/dist/agent-tool.js.map +0 -1
- package/dist/run.d.ts +0 -28
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -84
- package/dist/run.js.map +0 -1
- package/dist/testing.d.ts +0 -25
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -96
- package/dist/testing.js.map +0 -1
- package/docs/deployment-configuration.md +0 -65
- package/docs/migration.md +0 -70
- package/docs/python-bindings-release.md +0 -47
- package/docs/recipe-evals.md +0 -70
- package/docs/recipe-judges.md +0 -152
- package/docs/runtime-library.md +0 -171
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ExtensionAPI, ExtensionFactory } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
export interface RecipeExtensionSessionContext {
|
|
3
|
+
readonly recipe: {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
};
|
|
6
|
+
readonly agent: {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
};
|
|
9
|
+
readonly session: {
|
|
10
|
+
readonly role: "root" | "subagent";
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface RecipeExtensionRegistrationRegistry {
|
|
14
|
+
claim(kind: string, name: string, owner: string): void;
|
|
15
|
+
release(kind: string, name: string, owner: string): void;
|
|
16
|
+
}
|
|
17
|
+
/** @internal Exact tool names a package extension may keep model-visible. */
|
|
18
|
+
export declare function recipeExtensionToolAllowlist(declaredTools: readonly string[], hasAgentTool: boolean, additionalToolNames?: readonly string[]): ReadonlySet<string>;
|
|
19
|
+
/** @internal Reject ambiguous registrations across the package closure. */
|
|
20
|
+
export declare function createRecipeExtensionRegistrationRegistry(): RecipeExtensionRegistrationRegistry;
|
|
21
|
+
/** Return the immutable Recipe identity bound to this extension instance. */
|
|
22
|
+
export declare function getRecipeSessionContext(pi: ExtensionAPI): RecipeExtensionSessionContext;
|
|
23
|
+
/** Register behavior only when this session is running the named agent. */
|
|
24
|
+
export declare function forAgent(pi: ExtensionAPI, agentName: string, register: (context: RecipeExtensionSessionContext) => void): void;
|
|
25
|
+
/** Register behavior only when a session predicate matches. */
|
|
26
|
+
export declare function forRecipeSession(pi: ExtensionAPI, predicate: (context: RecipeExtensionSessionContext) => boolean, register: (context: RecipeExtensionSessionContext) => void): void;
|
|
27
|
+
/** @internal Bind context before Pi invokes a package extension factory. */
|
|
28
|
+
export declare function bindRecipeExtensionFactory(factory: ExtensionFactory, context: RecipeExtensionSessionContext, registrationRegistry?: RecipeExtensionRegistrationRegistry, owner?: string, allowedToolNames?: ReadonlySet<string>): ExtensionFactory;
|
|
29
|
+
//# sourceMappingURL=extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;KACpC,CAAC;CACH;AAID,MAAM,WAAW,mCAAmC;IAClD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACvD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1D;AAED,6EAA6E;AAC7E,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,YAAY,EAAE,OAAO,EACrB,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,WAAW,CAAC,MAAM,CAAC,CAMrB;AAED,2EAA2E;AAC3E,wBAAgB,yCAAyC,IAAI,mCAAmC,CAyB/F;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,YAAY,GACf,6BAA6B,CAQ/B;AAED,2EAA2E;AAC3E,wBAAgB,QAAQ,CACtB,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,IAAI,GACzD,IAAI,CAGN;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,OAAO,EAC9D,QAAQ,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,IAAI,GACzD,IAAI,CAGN;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,6BAA6B,EACtC,oBAAoB,CAAC,EAAE,mCAAmC,EAC1D,KAAK,SAAuB,EAC5B,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,gBAAgB,CAkFlB"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
const contexts = new WeakMap();
|
|
2
|
+
/** @internal Exact tool names a package extension may keep model-visible. */
|
|
3
|
+
export function recipeExtensionToolAllowlist(declaredTools, hasAgentTool, additionalToolNames = []) {
|
|
4
|
+
return new Set([
|
|
5
|
+
...declaredTools,
|
|
6
|
+
...(hasAgentTool ? ["agent"] : []),
|
|
7
|
+
...additionalToolNames,
|
|
8
|
+
]);
|
|
9
|
+
}
|
|
10
|
+
/** @internal Reject ambiguous registrations across the package closure. */
|
|
11
|
+
export function createRecipeExtensionRegistrationRegistry() {
|
|
12
|
+
const owners = new Map();
|
|
13
|
+
return {
|
|
14
|
+
claim(kind, name, owner) {
|
|
15
|
+
const key = `${kind}\0${name}`;
|
|
16
|
+
const existing = owners.get(key);
|
|
17
|
+
if (existing === owner)
|
|
18
|
+
return;
|
|
19
|
+
if (existing) {
|
|
20
|
+
throw new Error(`Recipe extension ${kind} registration "${name}" conflicts between ${existing} and ${owner}`);
|
|
21
|
+
}
|
|
22
|
+
owners.set(key, owner);
|
|
23
|
+
},
|
|
24
|
+
release(kind, name, owner) {
|
|
25
|
+
const key = `${kind}\0${name}`;
|
|
26
|
+
const existing = owners.get(key);
|
|
27
|
+
if (existing !== owner) {
|
|
28
|
+
throw new Error(`Recipe extension ${owner} cannot unregister ${kind} "${name}" owned by ${existing ?? "<host>"}`);
|
|
29
|
+
}
|
|
30
|
+
owners.delete(key);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/** Return the immutable Recipe identity bound to this extension instance. */
|
|
35
|
+
export function getRecipeSessionContext(pi) {
|
|
36
|
+
const context = contexts.get(pi);
|
|
37
|
+
if (!context) {
|
|
38
|
+
throw new Error("This extension is not running inside a Recipe-owned session");
|
|
39
|
+
}
|
|
40
|
+
return context;
|
|
41
|
+
}
|
|
42
|
+
/** Register behavior only when this session is running the named agent. */
|
|
43
|
+
export function forAgent(pi, agentName, register) {
|
|
44
|
+
const context = getRecipeSessionContext(pi);
|
|
45
|
+
if (context.agent.name === agentName)
|
|
46
|
+
register(context);
|
|
47
|
+
}
|
|
48
|
+
/** Register behavior only when a session predicate matches. */
|
|
49
|
+
export function forRecipeSession(pi, predicate, register) {
|
|
50
|
+
const context = getRecipeSessionContext(pi);
|
|
51
|
+
if (predicate(context))
|
|
52
|
+
register(context);
|
|
53
|
+
}
|
|
54
|
+
/** @internal Bind context before Pi invokes a package extension factory. */
|
|
55
|
+
export function bindRecipeExtensionFactory(factory, context, registrationRegistry, owner = "<recipe-extension>", allowedToolNames) {
|
|
56
|
+
return async (pi) => {
|
|
57
|
+
const registrationKinds = {
|
|
58
|
+
registerTool: "tool",
|
|
59
|
+
registerCommand: "command",
|
|
60
|
+
registerShortcut: "shortcut",
|
|
61
|
+
registerFlag: "flag",
|
|
62
|
+
registerMessageRenderer: "message renderer",
|
|
63
|
+
registerEntryRenderer: "entry renderer",
|
|
64
|
+
registerProvider: "provider",
|
|
65
|
+
};
|
|
66
|
+
const guarded = registrationRegistry || allowedToolNames
|
|
67
|
+
? new Proxy(pi, {
|
|
68
|
+
get(target, property, receiver) {
|
|
69
|
+
const value = Reflect.get(target, property, receiver);
|
|
70
|
+
const kind = typeof property === "string"
|
|
71
|
+
? registrationKinds[property]
|
|
72
|
+
: undefined;
|
|
73
|
+
if (!kind || !registrationRegistry || typeof value !== "function") {
|
|
74
|
+
if (property === "setActiveTools" &&
|
|
75
|
+
typeof value === "function" &&
|
|
76
|
+
allowedToolNames) {
|
|
77
|
+
return (names) => {
|
|
78
|
+
const undeclared = names.filter((name) => !allowedToolNames.has(name));
|
|
79
|
+
if (undeclared.length > 0) {
|
|
80
|
+
throw new Error(`Recipe extension attempted to activate undeclared tool(s): ${undeclared.join(", ")}`);
|
|
81
|
+
}
|
|
82
|
+
return value.call(target, names);
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (property === "unregisterProvider" &&
|
|
86
|
+
typeof value === "function" &&
|
|
87
|
+
registrationRegistry) {
|
|
88
|
+
return (name) => {
|
|
89
|
+
const providerName = typeof name === "string" ? name : name.id;
|
|
90
|
+
if (providerName) {
|
|
91
|
+
registrationRegistry.release("provider", providerName, owner);
|
|
92
|
+
}
|
|
93
|
+
return value.call(target, name);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
97
|
+
}
|
|
98
|
+
return (...args) => {
|
|
99
|
+
const registrationName = property === "registerTool"
|
|
100
|
+
? args[0]?.name
|
|
101
|
+
: property === "registerProvider" &&
|
|
102
|
+
typeof args[0] === "object"
|
|
103
|
+
? args[0]?.id
|
|
104
|
+
: args[0];
|
|
105
|
+
if (typeof registrationName === "string") {
|
|
106
|
+
registrationRegistry.claim(kind, property === "registerShortcut"
|
|
107
|
+
? registrationName.toLowerCase()
|
|
108
|
+
: registrationName, owner);
|
|
109
|
+
}
|
|
110
|
+
return value.apply(target, args);
|
|
111
|
+
};
|
|
112
|
+
},
|
|
113
|
+
})
|
|
114
|
+
: pi;
|
|
115
|
+
contexts.set(guarded, context);
|
|
116
|
+
await factory(guarded);
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export * from "./mcp.js";
|
|
6
|
-
export * from "./pi-extension.js";
|
|
7
|
-
export * from "./recipe-agent.js";
|
|
8
|
-
export * from "./recipe-model.js";
|
|
9
|
-
export * from "./recipe-package.js";
|
|
10
|
-
export * from "./recipe/resolve.js";
|
|
11
|
-
export * from "./run.js";
|
|
12
|
-
export * from "./run-controller.js";
|
|
13
|
-
export * from "./session.js";
|
|
1
|
+
export { resolveRecipe, RecipeResolutionError, } from "./recipe/resolve.js";
|
|
2
|
+
export type { ResolvedRecipe, ResolvedRecipeAgent, ResolvedRecipeAgentMcp, } from "./recipe/resolve.js";
|
|
3
|
+
export { createAgentSession, RecipeCredentialError, RecipeMcpEnvironmentInUseError, RecipeModelError, RecipeModelTransportError, } from "./api/session.js";
|
|
4
|
+
export type { CreateAgentSessionOptions, RecipeSessionHandle, RecipeSessionOtelOptions, } from "./api/session.js";
|
|
14
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,8BAA8B,EAC9B,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export * from "./inspect.js";
|
|
4
|
-
export * from "./mcp-catalog.js";
|
|
5
|
-
export * from "./mcp.js";
|
|
6
|
-
export * from "./pi-extension.js";
|
|
7
|
-
export * from "./recipe-agent.js";
|
|
8
|
-
export * from "./recipe-model.js";
|
|
9
|
-
export * from "./recipe-package.js";
|
|
10
|
-
export * from "./recipe/resolve.js";
|
|
11
|
-
export * from "./run.js";
|
|
12
|
-
export * from "./run-controller.js";
|
|
13
|
-
export * from "./session.js";
|
|
1
|
+
export { resolveRecipe, RecipeResolutionError, } from "./recipe/resolve.js";
|
|
2
|
+
export { createAgentSession, RecipeCredentialError, RecipeMcpEnvironmentInUseError, RecipeModelError, RecipeModelTransportError, } from "./api/session.js";
|
|
14
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,8BAA8B,EAC9B,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC"}
|
package/dist/inspect.d.ts
CHANGED
|
@@ -1,7 +1,35 @@
|
|
|
1
|
+
import type { RecipeAgentConfigField } from "./recipe-agent.js";
|
|
2
|
+
import type { ResolvedRecipe, ResolvedRecipeAgent } from "./recipe/resolve.js";
|
|
3
|
+
export interface RecipeAgentInspection {
|
|
4
|
+
name: string;
|
|
5
|
+
from?: string;
|
|
6
|
+
declaredFields: RecipeAgentConfigField[];
|
|
7
|
+
provenance: Partial<Record<RecipeAgentConfigField, string[]>>;
|
|
8
|
+
model: {
|
|
9
|
+
name: string;
|
|
10
|
+
thinkingLevel?: string;
|
|
11
|
+
config?: ResolvedRecipeAgent["modelConfig"];
|
|
12
|
+
};
|
|
13
|
+
prompt: {
|
|
14
|
+
base: "SYSTEM.md" | "pi";
|
|
15
|
+
agentInstructions?: {
|
|
16
|
+
mode: "append" | "replace";
|
|
17
|
+
source: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
tools: {
|
|
21
|
+
authored: string[];
|
|
22
|
+
root: string[];
|
|
23
|
+
subagent: string[];
|
|
24
|
+
};
|
|
25
|
+
skills: string[];
|
|
26
|
+
subagents: string[];
|
|
27
|
+
mcp?: ResolvedRecipeAgent["mcp"];
|
|
28
|
+
}
|
|
1
29
|
/**
|
|
2
30
|
* What a recipe requires before it can run, derived entirely from the
|
|
3
|
-
* package's existing declarations — no new manifest keys. Hosts
|
|
4
|
-
*
|
|
31
|
+
* package's existing declarations — no new manifest keys. Hosts can use this
|
|
32
|
+
* for preflight checks and configuration UIs.
|
|
5
33
|
*/
|
|
6
34
|
export interface RecipeInspection {
|
|
7
35
|
name: string;
|
|
@@ -9,18 +37,23 @@ export interface RecipeInspection {
|
|
|
9
37
|
description?: string;
|
|
10
38
|
agents: string[];
|
|
11
39
|
providers: string[];
|
|
12
|
-
|
|
40
|
+
credentialEnv: string[];
|
|
13
41
|
mcp: {
|
|
14
42
|
required: string[];
|
|
15
43
|
optional: string[];
|
|
16
44
|
};
|
|
17
|
-
|
|
45
|
+
mcpEnv: string[];
|
|
18
46
|
resources: {
|
|
19
47
|
agents: number;
|
|
20
48
|
skills: number;
|
|
21
49
|
extensions: number;
|
|
22
50
|
prompts: number;
|
|
23
51
|
};
|
|
52
|
+
packageClosure: {
|
|
53
|
+
extensions: string[];
|
|
54
|
+
prompts: string[];
|
|
55
|
+
};
|
|
56
|
+
resolvedAgents: RecipeAgentInspection[];
|
|
24
57
|
}
|
|
25
|
-
export declare function inspectRecipe(
|
|
58
|
+
export declare function inspectRecipe(resolvedRecipe: ResolvedRecipe): RecipeInspection;
|
|
26
59
|
//# sourceMappingURL=inspect.d.ts.map
|
package/dist/inspect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,sBAAsB,EAAE,CAAC;IACzC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;KAC7C,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;QACzB,iBAAiB,CAAC,EAAE;YAClB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;YAC3B,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;IACF,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,EAAE;QACd,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,cAAc,EAAE,qBAAqB,EAAE,CAAC;CACzC;AAmFD,wBAAgB,aAAa,CAAC,cAAc,EAAE,cAAc,GAAG,gBAAgB,CA2E9E"}
|
package/dist/inspect.js
CHANGED
|
@@ -1,16 +1,84 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { loadRecipeAgentDefinitions } from "./recipe-agent.js";
|
|
4
|
-
import { generatedBindingEnvVars, placeholderEnvVars, recipeMcpLocalConfigPath, recipeMcpLocalExamplePath, } from "./recipe-mcp-config.js";
|
|
5
|
-
import { packageResourcePaths, readPiPackageManifest, } from "./recipe-package.js";
|
|
1
|
+
import { generatedBindingEnvVars } from "./recipe-mcp-config.js";
|
|
6
2
|
import { expectedProviderEnvVars } from "./provider-env.js";
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
function agentChain(recipe, agent) {
|
|
4
|
+
const chain = [];
|
|
5
|
+
const seen = new Set();
|
|
6
|
+
let current = agent;
|
|
7
|
+
while (current && !seen.has(current.name)) {
|
|
8
|
+
seen.add(current.name);
|
|
9
|
+
chain.unshift(current);
|
|
10
|
+
current = current.definition.from
|
|
11
|
+
? recipe.agents.get(current.definition.from)
|
|
12
|
+
: undefined;
|
|
13
|
+
}
|
|
14
|
+
return chain;
|
|
15
|
+
}
|
|
16
|
+
function inspectAgent(recipe, agent, hasSystemPrompt) {
|
|
17
|
+
const chain = agentChain(recipe, agent);
|
|
18
|
+
const fields = [
|
|
19
|
+
"description",
|
|
20
|
+
"model",
|
|
21
|
+
"tools",
|
|
22
|
+
"mcp",
|
|
23
|
+
"skills",
|
|
24
|
+
"subagents",
|
|
25
|
+
"system_instructions",
|
|
26
|
+
];
|
|
27
|
+
const provenance = Object.fromEntries(fields.flatMap((field) => {
|
|
28
|
+
const sources = chain
|
|
29
|
+
.filter((entry) => entry.definition.declaredFields?.includes(field))
|
|
30
|
+
.map((entry) => entry.name);
|
|
31
|
+
return sources.length > 0 ? [[field, sources]] : [];
|
|
32
|
+
}));
|
|
33
|
+
const instructionSource = provenance.system_instructions?.at(-1);
|
|
34
|
+
const rootTools = [
|
|
35
|
+
...agent.tools,
|
|
36
|
+
...(agent.subagents.size > 0 ? ["agent"] : []),
|
|
37
|
+
];
|
|
38
|
+
return {
|
|
39
|
+
name: agent.name,
|
|
40
|
+
...(agent.definition.from ? { from: agent.definition.from } : {}),
|
|
41
|
+
declaredFields: [...(agent.definition.declaredFields ?? [])],
|
|
42
|
+
provenance,
|
|
43
|
+
model: {
|
|
44
|
+
name: agent.modelSpec,
|
|
45
|
+
...(agent.thinkingLevel
|
|
46
|
+
? { thinkingLevel: agent.thinkingLevel }
|
|
47
|
+
: {}),
|
|
48
|
+
...(agent.modelConfig ? { config: agent.modelConfig } : {}),
|
|
49
|
+
},
|
|
50
|
+
prompt: {
|
|
51
|
+
base: hasSystemPrompt ? "SYSTEM.md" : "pi",
|
|
52
|
+
...(agent.definition.systemInstructions && instructionSource
|
|
53
|
+
? {
|
|
54
|
+
agentInstructions: {
|
|
55
|
+
mode: agent.definition.systemInstructions.mode,
|
|
56
|
+
source: instructionSource,
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
: {}),
|
|
60
|
+
},
|
|
61
|
+
tools: {
|
|
62
|
+
authored: [...agent.tools],
|
|
63
|
+
root: rootTools,
|
|
64
|
+
subagent: [...agent.tools],
|
|
65
|
+
},
|
|
66
|
+
skills: [...agent.skillPaths],
|
|
67
|
+
subagents: [...agent.subagents.keys()],
|
|
68
|
+
...(agent.mcp ? { mcp: agent.mcp } : {}),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export function inspectRecipe(resolvedRecipe) {
|
|
72
|
+
const manifest = resolvedRecipe.manifest;
|
|
73
|
+
const definitions = [...resolvedRecipe.agents.values()].map((agent) => agent.definition);
|
|
74
|
+
const agents = [...new Set(definitions.map((agent) => agent.name))];
|
|
75
|
+
const uniqueResolvedAgents = [
|
|
76
|
+
...new Map([...resolvedRecipe.agents.values()].map((agent) => [agent.name, agent])).values(),
|
|
77
|
+
];
|
|
78
|
+
const extensionPaths = resolvedRecipe.resources.extensions;
|
|
79
|
+
const promptPaths = resolvedRecipe.resources.prompts;
|
|
12
80
|
const providers = [
|
|
13
|
-
...new Set(
|
|
81
|
+
...new Set(definitions.flatMap((agent) => {
|
|
14
82
|
const spec = agent.model?.name;
|
|
15
83
|
const slash = spec?.indexOf("/") ?? -1;
|
|
16
84
|
return spec && slash > 0 ? [spec.slice(0, slash)] : [];
|
|
@@ -25,46 +93,29 @@ export function inspectRecipe(recipeDir) {
|
|
|
25
93
|
const optional = manifest.mcp.servers
|
|
26
94
|
.filter((server) => !server.required)
|
|
27
95
|
.map((server) => server.id);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const bindingSource = [
|
|
32
|
-
recipeMcpLocalConfigPath(dir),
|
|
33
|
-
recipeMcpLocalExamplePath(dir),
|
|
34
|
-
].find((path) => existsSync(path));
|
|
35
|
-
if (bindingSource) {
|
|
36
|
-
const content = readFileSync(bindingSource, "utf8");
|
|
37
|
-
const parsed = JSON.parse(content);
|
|
38
|
-
mcpEnv = [
|
|
39
|
-
...new Set([
|
|
40
|
-
...placeholderEnvVars(content),
|
|
41
|
-
...(parsed.servers ?? []).flatMap((server) => typeof server.oauthClientSecretEnv === "string" &&
|
|
42
|
-
server.oauthClientSecretEnv
|
|
43
|
-
? [server.oauthClientSecretEnv]
|
|
44
|
-
: []),
|
|
45
|
-
]),
|
|
46
|
-
].sort();
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
mcpEnv = [
|
|
50
|
-
...new Set(manifest.mcp.servers.flatMap((server) => generatedBindingEnvVars(server.id))),
|
|
51
|
-
].sort();
|
|
52
|
-
}
|
|
96
|
+
const mcpEnv = [
|
|
97
|
+
...new Set(manifest.mcp.servers.flatMap((server) => generatedBindingEnvVars(server.id))),
|
|
98
|
+
].sort();
|
|
53
99
|
return {
|
|
54
100
|
name: manifest.name,
|
|
55
101
|
version: manifest.version,
|
|
56
102
|
...(manifest.description ? { description: manifest.description } : {}),
|
|
57
103
|
agents,
|
|
58
104
|
providers,
|
|
59
|
-
|
|
105
|
+
credentialEnv,
|
|
60
106
|
mcp: { required, optional },
|
|
61
|
-
|
|
107
|
+
mcpEnv,
|
|
62
108
|
resources: {
|
|
63
109
|
agents: agents.length,
|
|
64
|
-
skills:
|
|
65
|
-
extensions:
|
|
66
|
-
prompts:
|
|
110
|
+
skills: resolvedRecipe.resources.skills.length,
|
|
111
|
+
extensions: extensionPaths.length,
|
|
112
|
+
prompts: promptPaths.length,
|
|
113
|
+
},
|
|
114
|
+
packageClosure: {
|
|
115
|
+
extensions: [...extensionPaths],
|
|
116
|
+
prompts: [...promptPaths],
|
|
67
117
|
},
|
|
118
|
+
resolvedAgents: uniqueResolvedAgents.map((agent) => inspectAgent(resolvedRecipe, agent, resolvedRecipe.resources.hasSystemPrompt)),
|
|
68
119
|
};
|
|
69
120
|
}
|
|
70
121
|
//# sourceMappingURL=inspect.js.map
|
package/dist/inspect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"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"}
|
package/dist/interactions.d.ts
CHANGED
|
@@ -193,12 +193,28 @@ export interface AskUserResult {
|
|
|
193
193
|
* make progress without surfacing a UI dialog or an interrupt.
|
|
194
194
|
*/
|
|
195
195
|
export declare function autoResolveInteractions<T>(fn: () => Promise<T>): Promise<T>;
|
|
196
|
-
/** @deprecated Use `autoResolveInteractions()` for the explicit behavior. */
|
|
197
|
-
export declare function suppressInterruptResume<T>(fn: () => Promise<T>): Promise<T>;
|
|
198
196
|
/** Ask the user, resolving the best available interaction channel. */
|
|
199
197
|
export declare function askUser(request: AskUserRequest, opts: AskUserOptions): Promise<AskUserResult>;
|
|
200
198
|
/** Ask a blocking clarification question without hand-authoring interrupt details. */
|
|
201
199
|
export declare function askUserQuestion(request: AskUserQuestionRequest, opts: AskUserOptions): Promise<AskUserResult>;
|
|
202
200
|
/** Request approval without hand-authoring interrupt details or display data. */
|
|
203
201
|
export declare function askUserApproval(request: AskUserApprovalRequest, opts: AskUserOptions): Promise<AskUserResult>;
|
|
202
|
+
/**
|
|
203
|
+
* Render the byte-exact text a Recipe tool receives for an interaction
|
|
204
|
+
* outcome. Hosts use this when replacing a paused tool result on resume.
|
|
205
|
+
*/
|
|
206
|
+
export declare function formatInteractionOutcome(outcome: AskUserOutcome): string;
|
|
207
|
+
/**
|
|
208
|
+
* Host-neutral shape for a response to a paused Recipe interaction.
|
|
209
|
+
* Protocol adapters can pass their resume record without depending on AG-UI
|
|
210
|
+
* or another transport package.
|
|
211
|
+
*/
|
|
212
|
+
export interface InteractionResumeResponse {
|
|
213
|
+
status?: string;
|
|
214
|
+
payload?: unknown;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Convert a host resume response into the frozen Recipe interaction envelope.
|
|
218
|
+
*/
|
|
219
|
+
export declare function formatInteractionResume(response: InteractionResumeResponse): string;
|
|
204
220
|
//# sourceMappingURL=interactions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,iCAAiC,CAAC;AAEzC,mEAAmE;AACnE,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAC/D,mEAAmE;AACnE,eAAO,MAAM,4BAA4B,iBAAiB,CAAC;AAC3D,wEAAwE;AACxE,eAAO,MAAM,yBAAyB,cAAc,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,SAAU,CAAC;AAiBrD,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,qEAAqE;AACrE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC;IAC9C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC;IAC9C,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,wCAAwC;IACxC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,GAAG,EAAE,gBAAgB,CAAC;IACtB;;;;OAIG;IACH,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CACZ,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,wBAAwB,KAC7B,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACzC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,mCAAmC;AACnC,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE;AACtB,4EAA4E;GAC1E;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE;AAC3B,mEAAmE;GACjE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5B,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,cAAc,CAAC;CACzB;AAiBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE3E;AAED,sEAAsE;AACtE,wBAAsB,OAAO,CAC3B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,CAAC,CA2CxB;AAED,sFAAsF;AACtF,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,CAAC,CAkBxB;AAED,iFAAiF;AACjF,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,CAAC,CA6BxB;AAyKD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAmBxE;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,yBAAyB,GAClC,MAAM,CAoCR"}
|
package/dist/interactions.js
CHANGED
|
@@ -54,9 +54,8 @@ const UNAVAILABLE_ENVELOPE = "User interaction is unavailable in this session; n
|
|
|
54
54
|
// Recipe extensions and their host may resolve separate physical copies of
|
|
55
55
|
// Recipes (for example, one under the recipe and one under runtime-worker).
|
|
56
56
|
// Keep the async context process-global so either copy can establish the child
|
|
57
|
-
// boundary and every current copy observes it.
|
|
58
|
-
|
|
59
|
-
const INTERACTION_AUTO_RESOLUTION_KEY = Symbol.for("@introspection-ai/pi-recipes/interaction-auto-resolution");
|
|
57
|
+
// boundary and every current copy observes it.
|
|
58
|
+
const INTERACTION_AUTO_RESOLUTION_KEY = Symbol.for("@introspection-ai/recipes/interaction-auto-resolution");
|
|
60
59
|
const interactionGlobals = globalThis;
|
|
61
60
|
const interactionAutoResolution = interactionGlobals[INTERACTION_AUTO_RESOLUTION_KEY] ??
|
|
62
61
|
new AsyncLocalStorage();
|
|
@@ -71,10 +70,6 @@ interactionGlobals[INTERACTION_AUTO_RESOLUTION_KEY] = interactionAutoResolution;
|
|
|
71
70
|
export function autoResolveInteractions(fn) {
|
|
72
71
|
return interactionAutoResolution.run(true, fn);
|
|
73
72
|
}
|
|
74
|
-
/** @deprecated Use `autoResolveInteractions()` for the explicit behavior. */
|
|
75
|
-
export function suppressInterruptResume(fn) {
|
|
76
|
-
return autoResolveInteractions(fn);
|
|
77
|
-
}
|
|
78
73
|
/** Ask the user, resolving the best available interaction channel. */
|
|
79
74
|
export async function askUser(request, opts) {
|
|
80
75
|
const env = opts.env ?? process.env;
|
|
@@ -286,7 +281,11 @@ function localDialogMessage(request) {
|
|
|
286
281
|
}
|
|
287
282
|
return lines.join("\n");
|
|
288
283
|
}
|
|
289
|
-
|
|
284
|
+
/**
|
|
285
|
+
* Render the byte-exact text a Recipe tool receives for an interaction
|
|
286
|
+
* outcome. Hosts use this when replacing a paused tool result on resume.
|
|
287
|
+
*/
|
|
288
|
+
export function formatInteractionOutcome(outcome) {
|
|
290
289
|
switch (outcome.type) {
|
|
291
290
|
case "answered":
|
|
292
291
|
return `Answer: ${outcome.answer}`;
|
|
@@ -306,6 +305,38 @@ function envelopeText(outcome) {
|
|
|
306
305
|
return UNAVAILABLE_ENVELOPE;
|
|
307
306
|
}
|
|
308
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Convert a host resume response into the frozen Recipe interaction envelope.
|
|
310
|
+
*/
|
|
311
|
+
export function formatInteractionResume(response) {
|
|
312
|
+
if (response.status === "cancelled") {
|
|
313
|
+
return formatInteractionOutcome({ type: "declined" });
|
|
314
|
+
}
|
|
315
|
+
const payload = response.payload &&
|
|
316
|
+
typeof response.payload === "object" &&
|
|
317
|
+
!Array.isArray(response.payload)
|
|
318
|
+
? response.payload
|
|
319
|
+
: undefined;
|
|
320
|
+
const answer = typeof payload?.answer === "string" ? payload.answer.trim() : "";
|
|
321
|
+
if (answer) {
|
|
322
|
+
return formatInteractionOutcome({ type: "answered", answer });
|
|
323
|
+
}
|
|
324
|
+
if (typeof payload?.approved === "boolean") {
|
|
325
|
+
const feedback = typeof payload.feedback === "string" ? payload.feedback.trim() : "";
|
|
326
|
+
return formatInteractionOutcome(payload.approved
|
|
327
|
+
? {
|
|
328
|
+
type: "approved",
|
|
329
|
+
...(feedback ? { feedback } : {}),
|
|
330
|
+
}
|
|
331
|
+
: {
|
|
332
|
+
type: "revision_requested",
|
|
333
|
+
...(feedback ? { feedback } : {}),
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
return response.status
|
|
337
|
+
? `Interrupt response: ${response.status}`
|
|
338
|
+
: "Interrupt response received.";
|
|
339
|
+
}
|
|
309
340
|
function normalizeOptions(options) {
|
|
310
341
|
return (options ?? []).flatMap((option) => {
|
|
311
342
|
if (typeof option === "string") {
|
|
@@ -343,7 +374,7 @@ function interruptDetails(request, outcome) {
|
|
|
343
374
|
function finishedResult(request, outcome) {
|
|
344
375
|
return {
|
|
345
376
|
outcome,
|
|
346
|
-
content: [{ type: "text", text:
|
|
377
|
+
content: [{ type: "text", text: formatInteractionOutcome(outcome) }],
|
|
347
378
|
details: interruptDetails(request, outcome),
|
|
348
379
|
};
|
|
349
380
|
}
|
|
@@ -351,7 +382,7 @@ function awaitingUserResult(request, _toolCallId) {
|
|
|
351
382
|
const outcome = { type: "awaiting_user" };
|
|
352
383
|
return {
|
|
353
384
|
outcome,
|
|
354
|
-
content: [{ type: "text", text:
|
|
385
|
+
content: [{ type: "text", text: formatInteractionOutcome(outcome) }],
|
|
355
386
|
details: interruptDetails(request, outcome),
|
|
356
387
|
};
|
|
357
388
|
}
|