@tianshu-ai/tianshu 0.3.20 → 0.3.22

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.
Files changed (51) hide show
  1. package/node_modules/@tianshu-ai/plugin-sdk/dist/manifest.d.ts +19 -0
  2. package/node_modules/@tianshu-ai/plugin-sdk/dist/manifest.d.ts.map +1 -1
  3. package/node_modules/@tianshu-ai/plugin-sdk/src/manifest.ts +19 -0
  4. package/package.json +1 -1
  5. package/packages/plugin-sdk/dist/manifest.d.ts +19 -0
  6. package/packages/plugin-sdk/dist/manifest.d.ts.map +1 -1
  7. package/packages/server/builtinConfig/plugins/files/manifest.json +11 -11
  8. package/packages/server/builtinConfig/plugins/microsandbox/manifest.json +8 -8
  9. package/packages/server/builtinConfig/plugins/web-search/manifest.json +1 -1
  10. package/packages/server/builtinConfig/plugins/workboard/manifest.json +13 -13
  11. package/packages/server/dist/chat/flush-tool-delta.d.ts +18 -0
  12. package/packages/server/dist/chat/flush-tool-delta.d.ts.map +1 -0
  13. package/packages/server/dist/chat/flush-tool-delta.js +132 -0
  14. package/packages/server/dist/chat/flush-tool-delta.js.map +1 -0
  15. package/packages/server/dist/chat/handler.d.ts.map +1 -1
  16. package/packages/server/dist/chat/handler.js +12 -0
  17. package/packages/server/dist/chat/handler.js.map +1 -1
  18. package/packages/server/dist/chat/host-tools/tool-catalog-refresh.d.ts +19 -0
  19. package/packages/server/dist/chat/host-tools/tool-catalog-refresh.d.ts.map +1 -0
  20. package/packages/server/dist/chat/host-tools/tool-catalog-refresh.js +205 -0
  21. package/packages/server/dist/chat/host-tools/tool-catalog-refresh.js.map +1 -0
  22. package/packages/server/dist/chat/messages.d.ts.map +1 -1
  23. package/packages/server/dist/chat/messages.js +12 -3
  24. package/packages/server/dist/chat/messages.js.map +1 -1
  25. package/packages/server/dist/chat/tool-delta.d.ts +56 -0
  26. package/packages/server/dist/chat/tool-delta.d.ts.map +1 -0
  27. package/packages/server/dist/chat/tool-delta.js +141 -0
  28. package/packages/server/dist/chat/tool-delta.js.map +1 -0
  29. package/packages/server/dist/core/migrations/009-session-app-version.d.ts +4 -0
  30. package/packages/server/dist/core/migrations/009-session-app-version.d.ts.map +1 -0
  31. package/packages/server/dist/core/migrations/009-session-app-version.js +38 -0
  32. package/packages/server/dist/core/migrations/009-session-app-version.js.map +1 -0
  33. package/packages/server/dist/core/migrations/index.d.ts.map +1 -1
  34. package/packages/server/dist/core/migrations/index.js +2 -0
  35. package/packages/server/dist/core/migrations/index.js.map +1 -1
  36. package/packages/server/dist/core/plugins/registry.d.ts +46 -0
  37. package/packages/server/dist/core/plugins/registry.d.ts.map +1 -1
  38. package/packages/server/dist/core/plugins/registry.js +52 -0
  39. package/packages/server/dist/core/plugins/registry.js.map +1 -1
  40. package/packages/server/dist/index.js +20 -0
  41. package/packages/server/dist/index.js.map +1 -1
  42. package/packages/web/dist/assets/{index-xU4lYYqY.css → index-Cs0x5xVe.css} +1 -1
  43. package/packages/web/dist/assets/{index-CEIw68Su.js → index-DIiIMU7-.js} +2 -2
  44. package/packages/web/dist/index.html +2 -2
  45. package/plugins/files/manifest.json +11 -11
  46. package/plugins/microsandbox/manifest.json +8 -8
  47. package/plugins/web-search/manifest.json +1 -1
  48. package/plugins/workboard/dist/worker/tool-policy.d.ts.map +1 -1
  49. package/plugins/workboard/dist/worker/tool-policy.js +4 -0
  50. package/plugins/workboard/dist/worker/tool-policy.js.map +1 -1
  51. package/plugins/workboard/manifest.json +13 -13
@@ -277,6 +277,25 @@ export interface ToolContribution {
277
277
  * pi-ai schema, not here — we don't enforce a 1:1 between this
278
278
  * contribution id and the schema name. */
279
279
  module: string;
280
+ /**
281
+ * Semver string marking the release this tool first appeared in.
282
+ *
283
+ * Currently interpreted as a **tianshu app version** (the host's
284
+ * `package.json/version`). The boot-time tool-delta detector
285
+ * uses this to push a synthetic system message into any session
286
+ * whose `created_under_app_version` predates a tool's `since`,
287
+ * so the agent learns about newly-available tools across
288
+ * server restarts.
289
+ *
290
+ * v1 marketplace target: re-interpret as the plugin's own
291
+ * `manifest.version` (per-plugin granularity). The field name
292
+ * stays; only the comparison reference changes.
293
+ *
294
+ * Required for builtin plugins (manifest-hygiene tests pin
295
+ * this). Optional for third-party plugins during the v0
296
+ * transition — absent means "assume it has existed forever".
297
+ */
298
+ since?: string;
280
299
  }
281
300
  export interface ToolsetContribution {
282
301
  /** Local id, surfaced in the admin MCP servers view + plugin
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
@@ -299,6 +299,25 @@ export interface ToolContribution {
299
299
  * pi-ai schema, not here — we don't enforce a 1:1 between this
300
300
  * contribution id and the schema name. */
301
301
  module: string;
302
+ /**
303
+ * Semver string marking the release this tool first appeared in.
304
+ *
305
+ * Currently interpreted as a **tianshu app version** (the host's
306
+ * `package.json/version`). The boot-time tool-delta detector
307
+ * uses this to push a synthetic system message into any session
308
+ * whose `created_under_app_version` predates a tool's `since`,
309
+ * so the agent learns about newly-available tools across
310
+ * server restarts.
311
+ *
312
+ * v1 marketplace target: re-interpret as the plugin's own
313
+ * `manifest.version` (per-plugin granularity). The field name
314
+ * stays; only the comparison reference changes.
315
+ *
316
+ * Required for builtin plugins (manifest-hygiene tests pin
317
+ * this). Optional for third-party plugins during the v0
318
+ * transition — absent means "assume it has existed forever".
319
+ */
320
+ since?: string;
302
321
  }
303
322
 
304
323
  export interface ToolsetContribution {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tianshu-ai/tianshu",
3
- "version": "0.3.20",
3
+ "version": "0.3.22",
4
4
  "description": "An open AI agent platform with a sidecar browser. Built in public.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/tianshu-ai/tianshu",
@@ -277,6 +277,25 @@ export interface ToolContribution {
277
277
  * pi-ai schema, not here — we don't enforce a 1:1 between this
278
278
  * contribution id and the schema name. */
279
279
  module: string;
280
+ /**
281
+ * Semver string marking the release this tool first appeared in.
282
+ *
283
+ * Currently interpreted as a **tianshu app version** (the host's
284
+ * `package.json/version`). The boot-time tool-delta detector
285
+ * uses this to push a synthetic system message into any session
286
+ * whose `created_under_app_version` predates a tool's `since`,
287
+ * so the agent learns about newly-available tools across
288
+ * server restarts.
289
+ *
290
+ * v1 marketplace target: re-interpret as the plugin's own
291
+ * `manifest.version` (per-plugin granularity). The field name
292
+ * stays; only the comparison reference changes.
293
+ *
294
+ * Required for builtin plugins (manifest-hygiene tests pin
295
+ * this). Optional for third-party plugins during the v0
296
+ * transition — absent means "assume it has existed forever".
297
+ */
298
+ since?: string;
280
299
  }
281
300
  export interface ToolsetContribution {
282
301
  /** Local id, surfaced in the admin MCP servers view + plugin
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
@@ -55,17 +55,17 @@
55
55
  { "method": "POST", "path": "/upload", "handler": "upload" }
56
56
  ],
57
57
  "tools": [
58
- { "id": "list_dir", "module": "ListDirTool" },
59
- { "id": "read_file", "module": "ReadFileTool" },
60
- { "id": "write_file", "module": "WriteFileTool" },
61
- { "id": "edit_file", "module": "EditFileTool" },
62
- { "id": "glob", "module": "GlobTool" },
63
- { "id": "tenant_config_list", "module": "TenantConfigListTool" },
64
- { "id": "tenant_config_read", "module": "TenantConfigReadTool" },
65
- { "id": "tenant_config_write", "module": "TenantConfigWriteTool" },
66
- { "id": "tenant_config_edit", "module": "TenantConfigEditTool" },
67
- { "id": "tenant_config_delete", "module": "TenantConfigDeleteTool" },
68
- { "id": "tenant_config_glob", "module": "TenantConfigGlobTool" }
58
+ { "id": "list_dir", "module": "ListDirTool", "since": "0.1.0" },
59
+ { "id": "read_file", "module": "ReadFileTool", "since": "0.1.0" },
60
+ { "id": "write_file", "module": "WriteFileTool", "since": "0.1.0" },
61
+ { "id": "edit_file", "module": "EditFileTool", "since": "0.1.0" },
62
+ { "id": "glob", "module": "GlobTool", "since": "0.1.0" },
63
+ { "id": "tenant_config_list", "module": "TenantConfigListTool", "since": "0.1.0" },
64
+ { "id": "tenant_config_read", "module": "TenantConfigReadTool", "since": "0.1.0" },
65
+ { "id": "tenant_config_write", "module": "TenantConfigWriteTool", "since": "0.1.0" },
66
+ { "id": "tenant_config_edit", "module": "TenantConfigEditTool", "since": "0.1.0" },
67
+ { "id": "tenant_config_delete", "module": "TenantConfigDeleteTool", "since": "0.1.0" },
68
+ { "id": "tenant_config_glob", "module": "TenantConfigGlobTool", "since": "0.1.0" }
69
69
  ],
70
70
  "skills": [
71
71
  { "id": "workspace-layout", "path": "skills/files-workspace-layout.md" }
@@ -45,14 +45,14 @@
45
45
  }
46
46
  ],
47
47
  "tools": [
48
- { "id": "exec", "module": "ExecTool" },
49
- { "id": "reset_sandbox", "module": "ResetSandboxTool" },
50
- { "id": "get_sandbox_status", "module": "GetSandboxStatusTool" },
51
- { "id": "update_sandbox_config", "module": "UpdateSandboxConfigTool" },
52
- { "id": "build_sandbox", "module": "BuildSandboxTool" },
53
- { "id": "list_sandbox_builds", "module": "ListSandboxBuildsTool" },
54
- { "id": "use_sandbox_build", "module": "UseSandboxBuildTool" },
55
- { "id": "browser_health_check", "module": "BrowserHealthCheckTool" }
48
+ { "id": "exec", "module": "ExecTool", "since": "0.1.0" },
49
+ { "id": "reset_sandbox", "module": "ResetSandboxTool", "since": "0.1.0" },
50
+ { "id": "get_sandbox_status", "module": "GetSandboxStatusTool", "since": "0.1.0" },
51
+ { "id": "update_sandbox_config", "module": "UpdateSandboxConfigTool", "since": "0.1.0" },
52
+ { "id": "build_sandbox", "module": "BuildSandboxTool", "since": "0.1.0" },
53
+ { "id": "list_sandbox_builds", "module": "ListSandboxBuildsTool", "since": "0.1.0" },
54
+ { "id": "use_sandbox_build", "module": "UseSandboxBuildTool", "since": "0.1.0" },
55
+ { "id": "browser_health_check", "module": "BrowserHealthCheckTool", "since": "0.1.0" }
56
56
  ],
57
57
  "toolsets": [
58
58
  { "id": "browser", "module": "BrowserToolset", "displayName": "Playwright (Browser)" }
@@ -9,7 +9,7 @@
9
9
  "server": { "entry": "@tianshu-builtin/plugin-web-search/server" },
10
10
  "contributes": {
11
11
  "tools": [
12
- { "id": "web_search", "module": "WebSearchTool" }
12
+ { "id": "web_search", "module": "WebSearchTool", "since": "0.1.0" }
13
13
  ],
14
14
  "skills": [
15
15
  {
@@ -45,19 +45,19 @@
45
45
  }
46
46
  ],
47
47
  "tools": [
48
- { "id": "task_list", "module": "TaskListTool" },
49
- { "id": "task_create", "module": "TaskCreateTool" },
50
- { "id": "task_update", "module": "TaskUpdateTool" },
51
- { "id": "task_move", "module": "TaskMoveTool" },
52
- { "id": "task_delete", "module": "TaskDeleteTool" },
53
- { "id": "task_get_history", "module": "TaskGetHistoryTool" },
54
- { "id": "task_complete", "module": "TaskCompleteTool" },
55
- { "id": "task_continue", "module": "TaskContinueTool" },
56
- { "id": "task_retry_fresh", "module": "TaskRetryFreshTool" },
57
- { "id": "task_extend_timeout", "module": "TaskExtendTimeoutTool" },
58
- { "id": "task_abort", "module": "TaskAbortTool" },
59
- { "id": "model_list", "module": "ModelListTool" },
60
- { "id": "worker_analytics", "module": "WorkerAnalyticsTool" }
48
+ { "id": "task_list", "module": "TaskListTool", "since": "0.1.0" },
49
+ { "id": "task_create", "module": "TaskCreateTool", "since": "0.1.0" },
50
+ { "id": "task_update", "module": "TaskUpdateTool", "since": "0.1.0" },
51
+ { "id": "task_move", "module": "TaskMoveTool", "since": "0.1.0" },
52
+ { "id": "task_delete", "module": "TaskDeleteTool", "since": "0.1.0" },
53
+ { "id": "task_get_history", "module": "TaskGetHistoryTool", "since": "0.1.0" },
54
+ { "id": "task_complete", "module": "TaskCompleteTool", "since": "0.1.0" },
55
+ { "id": "task_continue", "module": "TaskContinueTool", "since": "0.1.0" },
56
+ { "id": "task_retry_fresh", "module": "TaskRetryFreshTool", "since": "0.1.0" },
57
+ { "id": "task_extend_timeout", "module": "TaskExtendTimeoutTool", "since": "0.1.0" },
58
+ { "id": "task_abort", "module": "TaskAbortTool", "since": "0.1.0" },
59
+ { "id": "model_list", "module": "ModelListTool", "since": "0.1.0" },
60
+ { "id": "worker_analytics", "module": "WorkerAnalyticsTool", "since": "0.3.20" }
61
61
  ],
62
62
  "skills": [
63
63
  { "id": "workboard-howto", "path": "skills/workboard-howto.md" },
@@ -0,0 +1,18 @@
1
+ import type { TenantContext } from "../core/index.js";
2
+ import type { PluginRegistry } from "../core/plugins/registry.js";
3
+ import { type ChatSession } from "./messages.js";
4
+ interface FlushOpts {
5
+ ctx: TenantContext;
6
+ session: ChatSession;
7
+ pluginRegistry?: PluginRegistry;
8
+ }
9
+ /**
10
+ * Side-effecting flush: returns true iff a note was appended.
11
+ *
12
+ * Failure modes are best-effort: we never want a tool-delta hiccup
13
+ * to block the user's prompt from running. Every error path logs
14
+ * and returns false, letting the caller proceed normally.
15
+ */
16
+ export declare function flushToolDeltaForSession(opts: FlushOpts): boolean;
17
+ export {};
18
+ //# sourceMappingURL=flush-tool-delta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flush-tool-delta.d.ts","sourceRoot":"","sources":["../../src/chat/flush-tool-delta.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAOhE,UAAU,SAAS;IACjB,GAAG,EAAE,aAAa,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAiCD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAwGjE"}
@@ -0,0 +1,132 @@
1
+ // Per-prompt tool-delta flush.
2
+ //
3
+ // Called once at the top of every `runPrompt` turn before we
4
+ // build the system prompt + toolset. If the session was opened
5
+ // under an older app version and there are tools whose `since`
6
+ // post-dates that stamp, we drop a synthetic `role: "user"`
7
+ // system note into the session so the model's history reflects
8
+ // the change. After the note is appended we bump the session's
9
+ // stamp to the current version so the same note doesn't fire
10
+ // again on the next turn.
11
+ //
12
+ // Why per-prompt and not on server boot:
13
+ // - boot would require enumerating every active session in
14
+ // every tenant + activating every tenant's plugin registry
15
+ // up-front; per-prompt is naturally lazy
16
+ // - no risk of writing notifications nobody ever reads
17
+ // - the model sees the note on the very turn it would have
18
+ // needed the new tool, not "next time you come back"
19
+ import { getPackageVersion } from "../setup/repo-root.js";
20
+ import { appendMessage } from "./messages.js";
21
+ import { computeSessionToolDeltas, renderToolDeltaNote, } from "./tool-delta.js";
22
+ /** Look up the stamped version. Separate from session loading so we
23
+ * don't have to thread an extra field through every ChatSession
24
+ * consumer; the column is only relevant to this code path. */
25
+ function readSessionAppVersion(ctx, sessionId) {
26
+ const row = ctx.db
27
+ .prepare(`SELECT created_under_app_version FROM sessions WHERE id = ?`)
28
+ .get(sessionId);
29
+ return row?.created_under_app_version ?? null;
30
+ }
31
+ function bumpSessionAppVersion(ctx, sessionId, version) {
32
+ ctx.db
33
+ .prepare(`UPDATE sessions SET created_under_app_version = ? WHERE id = ?`)
34
+ .run(version, sessionId);
35
+ }
36
+ /**
37
+ * Side-effecting flush: returns true iff a note was appended.
38
+ *
39
+ * Failure modes are best-effort: we never want a tool-delta hiccup
40
+ * to block the user's prompt from running. Every error path logs
41
+ * and returns false, letting the caller proceed normally.
42
+ */
43
+ export function flushToolDeltaForSession(opts) {
44
+ const { ctx, session, pluginRegistry } = opts;
45
+ // Only user-facing sessions get the note. Worker sessions are
46
+ // ephemeral per task and rebuild context from scratch each run.
47
+ if (session.kind !== "user")
48
+ return false;
49
+ const currentVersion = getPackageVersion();
50
+ if (!currentVersion)
51
+ return false;
52
+ let stamped;
53
+ try {
54
+ stamped = readSessionAppVersion(ctx, session.id);
55
+ }
56
+ catch (err) {
57
+ console.warn(`[flush-tool-delta] read failed for ${session.id}: ${err instanceof Error ? err.message : String(err)}`);
58
+ return false;
59
+ }
60
+ // Pre-009 sessions (NULL stamp): claim them as "current" without
61
+ // a notification so successive restarts don't keep re-checking.
62
+ if (stamped == null) {
63
+ try {
64
+ bumpSessionAppVersion(ctx, session.id, currentVersion);
65
+ }
66
+ catch (err) {
67
+ // non-fatal
68
+ console.warn(`[flush-tool-delta] bump (null path) failed for ${session.id}: ${err instanceof Error ? err.message : String(err)}`);
69
+ }
70
+ return false;
71
+ }
72
+ if (stamped === currentVersion)
73
+ return false;
74
+ // Catalog comes straight from the plugin registry. No registry
75
+ // (e.g. tests that don't pass one) → no notification.
76
+ if (!pluginRegistry)
77
+ return false;
78
+ let catalog = [];
79
+ try {
80
+ catalog = pluginRegistry
81
+ .toolCatalogForTenant(ctx.tenantId)
82
+ .map((c) => ({
83
+ toolName: c.toolName,
84
+ pluginId: c.pluginId,
85
+ since: c.since,
86
+ description: c.description,
87
+ }));
88
+ }
89
+ catch (err) {
90
+ console.warn(`[flush-tool-delta] catalog read failed: ${err instanceof Error ? err.message : String(err)}`);
91
+ return false;
92
+ }
93
+ if (catalog.length === 0)
94
+ return false;
95
+ const deltas = computeSessionToolDeltas({
96
+ currentVersion,
97
+ catalog,
98
+ sessions: [
99
+ { sessionId: session.id, createdUnderAppVersion: stamped },
100
+ ],
101
+ });
102
+ const delta = deltas[0];
103
+ if (!delta || delta.newTools.length === 0) {
104
+ // No new-since-stamp tools; just bump so we don't compute this
105
+ // again on the next turn.
106
+ try {
107
+ bumpSessionAppVersion(ctx, session.id, currentVersion);
108
+ }
109
+ catch (err) {
110
+ console.warn(`[flush-tool-delta] bump (empty-delta path) failed for ${session.id}: ${err instanceof Error ? err.message : String(err)}`);
111
+ }
112
+ return false;
113
+ }
114
+ const text = renderToolDeltaNote({
115
+ fromVersion: stamped,
116
+ toVersion: currentVersion,
117
+ newTools: delta.newTools,
118
+ });
119
+ try {
120
+ // Same `role: "user"` convention `renderPluginsChangedNote`
121
+ // uses (see index.ts onPluginsChanged) so the rehydrated
122
+ // history treats it as a real turn the model will read.
123
+ appendMessage(ctx, session, { role: "user", content: text });
124
+ bumpSessionAppVersion(ctx, session.id, currentVersion);
125
+ }
126
+ catch (err) {
127
+ console.warn(`[flush-tool-delta] append/bump failed for ${session.id}: ${err instanceof Error ? err.message : String(err)}`);
128
+ return false;
129
+ }
130
+ return true;
131
+ }
132
+ //# sourceMappingURL=flush-tool-delta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flush-tool-delta.js","sourceRoot":"","sources":["../../src/chat/flush-tool-delta.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,YAAY,EAEZ,OAAO,IAAI,SAAS,EAMpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AAYvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAgB1B,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAKL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAU1B,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CA6G7D;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwUlE;AA+UD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAWT;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuB/B;AAqHD;;;;;;;;;;;;;;;;;;GAkBG;AACH;;;;;gBAKgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,SAAS,WAAW,EAAO,EACnC,eAAe,GAAE,SAAS,oBAAoB,EAAO,GACpD,MAAM,CAwFR;AAmDD;;;;;;GAMG;AACH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAuBT;AAwBD,wBAAgB,wBAAwB,IAAI,MAAM,CAWjD;AA+ED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAQR;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAmBR;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,MAAM,CAKR;AAED;;;;;uBAKuB;AACvB,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,MAAM,CAyBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,WAAW,EAAE,GAC7B,MAAM,CAsBR;AA0CD,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAkC9C;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -34,6 +34,7 @@ import { filterSkillsForTenant, loadSkillsForPlugin, } from "../core/plugins/ski
34
34
  import { loadTenantSkills } from "../core/tenant-skills.js";
35
35
  import { fileURLToPath } from "node:url";
36
36
  import { ensureActiveSession, listMessagesForUserPage, loadAgentHistoryForSession, } from "./messages.js";
37
+ import { flushToolDeltaForSession } from "./flush-tool-delta.js";
37
38
  import { CompactSkippedError, compactSession } from "./compact.js";
38
39
  import { toWire, } from "./ws-protocol.js";
39
40
  import { cacheGet, cachePut, fitToLimit, imageFitCacheKey, } from "./image-fit.js";
@@ -149,6 +150,17 @@ export async function runPrompt(args) {
149
150
  const wireOpts = makeWireOpts(ctx);
150
151
  const repo = new SqliteSessionRepo(ctx);
151
152
  let session = ensureActiveSession(ctx, userId);
153
+ // Per-prompt tool-delta flush: if the host upgraded since this
154
+ // session was opened and there are new builtin tools, drop a
155
+ // synthetic system note into the session before we build the
156
+ // model's history. See chat/flush-tool-delta.ts. Errors there
157
+ // are best-effort — a failure here must never block the prompt.
158
+ try {
159
+ flushToolDeltaForSession({ ctx, session, pluginRegistry });
160
+ }
161
+ catch (err) {
162
+ console.warn(`[flush-tool-delta] unexpected throw: ${err instanceof Error ? err.message : String(err)}`);
163
+ }
152
164
  // Resolve the model up front — we need imageMaxBytes / context
153
165
  // window for both auto-compact and the LLM call below.
154
166
  const modelInfo = (modelId ? findModel(ctx.config, modelId) : undefined) ?? getDefaultModel(ctx.config);