iosm-cli 0.2.5 → 0.2.7

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 (59) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +460 -304
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +4 -1
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/core/agent-profiles.d.ts.map +1 -1
  7. package/dist/core/agent-profiles.js +4 -2
  8. package/dist/core/agent-profiles.js.map +1 -1
  9. package/dist/core/agent-session.d.ts.map +1 -1
  10. package/dist/core/agent-session.js +14 -1
  11. package/dist/core/agent-session.js.map +1 -1
  12. package/dist/core/sdk.d.ts +2 -2
  13. package/dist/core/sdk.d.ts.map +1 -1
  14. package/dist/core/sdk.js +3 -3
  15. package/dist/core/sdk.js.map +1 -1
  16. package/dist/core/shadow-guard.js +1 -1
  17. package/dist/core/shadow-guard.js.map +1 -1
  18. package/dist/core/shared-memory.d.ts +14 -0
  19. package/dist/core/shared-memory.d.ts.map +1 -1
  20. package/dist/core/shared-memory.js +63 -0
  21. package/dist/core/shared-memory.js.map +1 -1
  22. package/dist/core/system-prompt.d.ts.map +1 -1
  23. package/dist/core/system-prompt.js +17 -2
  24. package/dist/core/system-prompt.js.map +1 -1
  25. package/dist/core/tools/fetch.d.ts +56 -0
  26. package/dist/core/tools/fetch.d.ts.map +1 -0
  27. package/dist/core/tools/fetch.js +272 -0
  28. package/dist/core/tools/fetch.js.map +1 -0
  29. package/dist/core/tools/fs-ops.d.ts +54 -0
  30. package/dist/core/tools/fs-ops.d.ts.map +1 -0
  31. package/dist/core/tools/fs-ops.js +206 -0
  32. package/dist/core/tools/fs-ops.js.map +1 -0
  33. package/dist/core/tools/git-read.d.ts +60 -0
  34. package/dist/core/tools/git-read.d.ts.map +1 -0
  35. package/dist/core/tools/git-read.js +267 -0
  36. package/dist/core/tools/git-read.js.map +1 -0
  37. package/dist/core/tools/index.d.ts +44 -0
  38. package/dist/core/tools/index.d.ts.map +1 -1
  39. package/dist/core/tools/index.js +22 -0
  40. package/dist/core/tools/index.js.map +1 -1
  41. package/dist/core/tools/shared-memory.d.ts.map +1 -1
  42. package/dist/core/tools/shared-memory.js +45 -5
  43. package/dist/core/tools/shared-memory.js.map +1 -1
  44. package/dist/core/tools/task.d.ts +12 -1
  45. package/dist/core/tools/task.d.ts.map +1 -1
  46. package/dist/core/tools/task.js +565 -9
  47. package/dist/core/tools/task.js.map +1 -1
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +1 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  53. package/dist/modes/interactive/interactive-mode.js +185 -26
  54. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  55. package/docs/cli-reference.md +4 -1
  56. package/docs/configuration.md +2 -2
  57. package/docs/interactive-mode.md +2 -2
  58. package/docs/rpc-json-sdk.md +1 -1
  59. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"shared-memory.d.ts","sourceRoot":"","sources":["../../../src/core/tools/shared-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAEN,KAAK,mBAAmB,EAIxB,MAAM,qBAAqB,CAAC;AAE7B,QAAA,MAAM,uBAAuB;;;;;;EAwB3B,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;EA8B1B,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC5E,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAyD1E,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC,OAAO,uBAAuB,CAAC,CA+BnH;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC,OAAO,sBAAsB,CAAC,CAiDjH"}
1
+ {"version":3,"file":"shared-memory.d.ts","sourceRoot":"","sources":["../../../src/core/tools/shared-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAEN,KAAK,mBAAmB,EAIxB,MAAM,qBAAqB,CAAC;AAa7B,QAAA,MAAM,uBAAuB;;;;;;EAwB3B,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;EA8B1B,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC5E,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AA2E1E,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC,OAAO,uBAAuB,CAAC,CAuCnH;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC,OAAO,sBAAsB,CAAC,CA2DjH"}
@@ -1,5 +1,14 @@
1
1
  import { Type } from "@sinclair/typebox";
2
2
  import { readSharedMemory, writeSharedMemory, } from "../shared-memory.js";
3
+ function resolveSharedMemoryScopePolicy(raw) {
4
+ const normalized = (raw ?? "").trim().toLowerCase();
5
+ if (normalized === "warn")
6
+ return "warn";
7
+ if (normalized === "enforce")
8
+ return "enforce";
9
+ return "legacy";
10
+ }
11
+ const sharedMemoryScopePolicy = resolveSharedMemoryScopePolicy(process.env.IOSM_SHARED_MEMORY_SCOPE_POLICY);
3
12
  const sharedMemoryWriteSchema = Type.Object({
4
13
  key: Type.String({
5
14
  minLength: 1,
@@ -75,8 +84,21 @@ function summarizeWriter(context) {
75
84
  .join(" ");
76
85
  return parts.length > 0 ? parts : "root";
77
86
  }
78
- function normalizeScope(scope) {
79
- return scope ?? "task";
87
+ function resolveScope(input) {
88
+ if (input.scope)
89
+ return { scope: input.scope };
90
+ if (sharedMemoryScopePolicy === "enforce") {
91
+ throw new Error(`shared_memory_${input.operation} requires explicit scope ("run" or "task"). ` +
92
+ `Set IOSM_SHARED_MEMORY_SCOPE_POLICY=legacy to restore implicit defaults.`);
93
+ }
94
+ const shouldWarn = sharedMemoryScopePolicy === "warn" || input.context.profile === "meta";
95
+ if (!shouldWarn) {
96
+ return { scope: "task" };
97
+ }
98
+ return {
99
+ scope: "task",
100
+ warning: `scope omitted -> defaulted to "task" for shared_memory_${input.operation}. Pass explicit scope to avoid ambiguity.`,
101
+ };
80
102
  }
81
103
  function normalizeMode(mode) {
82
104
  return mode ?? "set";
@@ -90,23 +112,31 @@ export function createSharedMemoryWriteTool(context) {
90
112
  execute: async (_toolCallId, params, _signal) => {
91
113
  const input = params;
92
114
  const ensured = ensureContext(context);
115
+ const scopeResolution = resolveScope({
116
+ scope: input.scope,
117
+ context: ensured,
118
+ operation: "write",
119
+ });
93
120
  const result = await writeSharedMemory(ensured, {
94
121
  key: input.key,
95
122
  value: input.value,
96
- scope: normalizeScope(input.scope),
123
+ scope: scopeResolution.scope,
97
124
  mode: normalizeMode(input.mode),
98
125
  ifVersion: input.if_version,
99
126
  }, _signal);
127
+ const warningLine = scopeResolution.warning ? `\nwarning: ${scopeResolution.warning}` : "";
100
128
  return {
101
129
  content: [
102
130
  {
103
131
  type: "text",
104
- text: `shared memory updated (${result.scope}:${result.key} v${result.version} by ${summarizeWriter(ensured)})`,
132
+ text: `shared memory updated (${result.scope}:${result.key} v${result.version} by ${summarizeWriter(ensured)})${warningLine}`,
105
133
  },
106
134
  ],
107
135
  details: {
108
136
  runId: ensured.runId,
109
137
  item: summarizeSharedMemoryItemForDetails(result, false),
138
+ scopePolicy: sharedMemoryScopePolicy,
139
+ scopeWarning: scopeResolution.warning,
110
140
  },
111
141
  };
112
142
  },
@@ -124,8 +154,13 @@ export function createSharedMemoryReadTool(context) {
124
154
  throw new Error("shared_memory_read accepts either key or prefix, not both");
125
155
  }
126
156
  const ensured = ensureContext(context);
157
+ const scopeResolution = resolveScope({
158
+ scope: input.scope,
159
+ context: ensured,
160
+ operation: "read",
161
+ });
127
162
  const result = await readSharedMemory(ensured, {
128
- scope: normalizeScope(input.scope),
163
+ scope: scopeResolution.scope,
129
164
  key: input.key,
130
165
  prefix: input.prefix,
131
166
  limit: input.limit,
@@ -147,6 +182,9 @@ export function createSharedMemoryReadTool(context) {
147
182
  : ` value=${item.value.length > 80 ? `${item.value.slice(0, 77)}...` : item.value}`;
148
183
  return `- ${item.key} v${item.version}${writer ? ` (${writer})` : ""}${valuePart}`;
149
184
  });
185
+ if (scopeResolution.warning) {
186
+ lines.unshift(`warning: ${scopeResolution.warning}`);
187
+ }
150
188
  return {
151
189
  content: [{ type: "text", text: [header, ...lines].join("\n") }],
152
190
  details: {
@@ -154,6 +192,8 @@ export function createSharedMemoryReadTool(context) {
154
192
  scope: result.scope,
155
193
  totalMatched: result.totalMatched,
156
194
  items: result.items.map((item) => summarizeSharedMemoryItemForDetails(item, input.include_values === true)),
195
+ scopePolicy: sharedMemoryScopePolicy,
196
+ scopeWarning: scopeResolution.warning,
157
197
  },
158
198
  };
159
199
  },
@@ -1 +1 @@
1
- {"version":3,"file":"shared-memory.js","sourceRoot":"","sources":["../../../src/core/tools/shared-memory.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACN,gBAAgB,EAIhB,iBAAiB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;QAChB,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,kFAAkF;KAC/F,CAAC;IACF,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,wBAAwB;KACrC,CAAC;IACF,KAAK,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;QACvD,WAAW,EAAE,2EAA2E;KACxF,CAAC,CACF;IACD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;QACzD,WAAW,EAAE,4DAA4D;KACzE,CAAC,CACF;IACD,UAAU,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,OAAO,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,kFAAkF;KAC/F,CAAC,CACF;CACD,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,MAAM,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,oDAAoD;KACjE,CAAC,CACF;IACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,MAAM,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,kDAAkD;KAC/D,CAAC,CACF;IACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;QACvD,WAAW,EAAE,2EAA2E;KACxF,CAAC,CACF;IACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,OAAO,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,yCAAyC;KACtD,CAAC,CACF;IACD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAC5B,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,mEAAmE;KAChF,CAAC,CACF;CACD,CAAC,CAAC;AAKH,SAAS,mCAAmC,CAC3C,IAOC,EACD,mBAA4B;IAE5B,MAAM,IAAI,GAA4B;QACrC,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;KACnB,CAAC;IACF,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACtC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1B,OAAO;YACN,GAAG,IAAI;YACP,WAAW;SACX,CAAC;IACH,CAAC;IACD,OAAO;QACN,GAAG,IAAI;QACP,WAAW;QACX,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;KACrF,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAA4B;IAClD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,OAA4B;IACpD,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SACtI,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC/C,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1C,CAAC;AAED,SAAS,cAAc,CAAC,KAAoC;IAC3D,OAAO,KAAK,IAAI,MAAM,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CAAC,IAAuC;IAC7D,OAAO,IAAI,IAAI,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAA4B;IACvE,OAAO;QACN,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACV,wGAAwG;QACzG,UAAU,EAAE,uBAAuB;QACnC,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAAe,EAAE,OAAqB,EAAE,EAAE;YAC9E,MAAM,KAAK,GAAG,MAAgC,CAAC;YAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE;gBAC/C,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;gBAClC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC/B,SAAS,EAAE,KAAK,CAAC,UAAU;aAC3B,EAAE,OAAO,CAAC,CAAC;YACZ,OAAO;gBACN,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,0BAA0B,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,OAAO,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;qBAC/G;iBACD;gBACD,OAAO,EAAE;oBACR,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,IAAI,EAAE,mCAAmC,CAAC,MAAM,EAAE,KAAK,CAAC;iBACxD;aACD,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAA4B;IACtE,OAAO;QACN,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACV,uFAAuF;QACxF,UAAU,EAAE,sBAAsB;QAClC,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAAe,EAAE,OAAqB,EAAE,EAAE;YAC9E,MAAM,KAAK,GAAG,MAA+B,CAAC;YAC9C,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;gBAC9C,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;gBAClC,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,aAAa,EAAE,KAAK,CAAC,cAAc,IAAI,KAAK;aAC5C,EAAE,OAAO,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,iBAAiB,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9F,MAAM,KAAK,GACV,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBACxB,CAAC,CAAC,CAAC,cAAc,CAAC;gBAClB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC1B,MAAM,MAAM,GAAG;wBACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;wBAC7D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;wBACzE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;qBAClE;yBACC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;yBAClD,IAAI,CAAC,GAAG,CAAC,CAAC;oBACZ,MAAM,SAAS,GACd,IAAI,CAAC,KAAK,KAAK,SAAS;wBACvB,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACtF,OAAO,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;gBACpF,CAAC,CAAC,CAAC;YACN,OAAO;gBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzE,OAAO,EAAE;oBACR,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mCAAmC,CAAC,IAAI,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC;iBAC3G;aACD,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC","sourcesContent":["import type { AgentTool } from \"@mariozechner/pi-agent-core\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport {\n\treadSharedMemory,\n\ttype SharedMemoryContext,\n\ttype SharedMemoryScope,\n\ttype SharedMemoryWriteMode,\n\twriteSharedMemory,\n} from \"../shared-memory.js\";\n\nconst sharedMemoryWriteSchema = Type.Object({\n\tkey: Type.String({\n\t\tminLength: 1,\n\t\tdescription: \"Logical key for shared data within the current run (for example: findings/auth).\",\n\t}),\n\tvalue: Type.String({\n\t\tdescription: \"Text payload to store.\",\n\t}),\n\tscope: Type.Optional(\n\t\tType.Union([Type.Literal(\"run\"), Type.Literal(\"task\")], {\n\t\t\tdescription: \"run = visible to all tasks in run_id; task = isolated to current task_id.\",\n\t\t}),\n\t),\n\tmode: Type.Optional(\n\t\tType.Union([Type.Literal(\"set\"), Type.Literal(\"append\")], {\n\t\t\tdescription: \"set replaces value; append concatenates to existing value.\",\n\t\t}),\n\t),\n\tif_version: Type.Optional(\n\t\tType.Integer({\n\t\t\tminimum: 1,\n\t\t\tdescription: \"Optional CAS guard. Write succeeds only when current version matches this value.\",\n\t\t}),\n\t),\n});\n\nconst sharedMemoryReadSchema = Type.Object({\n\tkey: Type.Optional(\n\t\tType.String({\n\t\t\tminLength: 1,\n\t\t\tdescription: \"Exact key to read. Mutually exclusive with prefix.\",\n\t\t}),\n\t),\n\tprefix: Type.Optional(\n\t\tType.String({\n\t\t\tminLength: 1,\n\t\t\tdescription: \"Prefix filter for keys (for example: findings/).\",\n\t\t}),\n\t),\n\tscope: Type.Optional(\n\t\tType.Union([Type.Literal(\"run\"), Type.Literal(\"task\")], {\n\t\t\tdescription: \"run = visible to all tasks in run_id; task = isolated to current task_id.\",\n\t\t}),\n\t),\n\tlimit: Type.Optional(\n\t\tType.Integer({\n\t\t\tminimum: 1,\n\t\t\tmaximum: 100,\n\t\t\tdescription: \"Maximum entries to return (default 20).\",\n\t\t}),\n\t),\n\tinclude_values: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"When false (default), returns only metadata (key/version/writer).\",\n\t\t}),\n\t),\n});\n\nexport type SharedMemoryWriteInput = Static<typeof sharedMemoryWriteSchema>;\nexport type SharedMemoryReadInput = Static<typeof sharedMemoryReadSchema>;\n\nfunction summarizeSharedMemoryItemForDetails(\n\titem: {\n\t\tkey: string;\n\t\tscope: SharedMemoryScope;\n\t\tversion: number;\n\t\tupdatedAt: string;\n\t\twriter: { taskId?: string; delegateId?: string; profile?: string };\n\t\tvalue?: string;\n\t},\n\tincludeValuePreview: boolean,\n): Record<string, unknown> {\n\tconst base: Record<string, unknown> = {\n\t\tkey: item.key,\n\t\tscope: item.scope,\n\t\tversion: item.version,\n\t\tupdatedAt: item.updatedAt,\n\t\twriter: item.writer,\n\t};\n\tif (typeof item.value !== \"string\") return base;\n\tconst valueLength = item.value.length;\n\tif (!includeValuePreview) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tvalueLength,\n\t\t};\n\t}\n\treturn {\n\t\t...base,\n\t\tvalueLength,\n\t\tvaluePreview: item.value.length > 200 ? `${item.value.slice(0, 197)}...` : item.value,\n\t};\n}\n\nfunction ensureContext(context: SharedMemoryContext): SharedMemoryContext {\n\tif (!context.runId || !context.runId.trim()) {\n\t\tthrow new Error(\"shared memory is unavailable: missing run_id context\");\n\t}\n\treturn context;\n}\n\nfunction summarizeWriter(context: SharedMemoryContext): string {\n\tconst parts = [context.taskId ? `task=${context.taskId}` : undefined, context.delegateId ? `delegate=${context.delegateId}` : undefined]\n\t\t.filter((item): item is string => Boolean(item))\n\t\t.join(\" \");\n\treturn parts.length > 0 ? parts : \"root\";\n}\n\nfunction normalizeScope(scope: SharedMemoryScope | undefined): SharedMemoryScope {\n\treturn scope ?? \"task\";\n}\n\nfunction normalizeMode(mode: SharedMemoryWriteMode | undefined): SharedMemoryWriteMode {\n\treturn mode ?? \"set\";\n}\n\nexport function createSharedMemoryWriteTool(context: SharedMemoryContext): AgentTool<typeof sharedMemoryWriteSchema> {\n\treturn {\n\t\tname: \"shared_memory_write\",\n\t\tlabel: \"shared_memory_write\",\n\t\tdescription:\n\t\t\t\"Write intermediate data into run-scoped shared memory so parallel agents/delegates can exchange state.\",\n\t\tparameters: sharedMemoryWriteSchema,\n\t\texecute: async (_toolCallId: string, params: unknown, _signal?: AbortSignal) => {\n\t\t\tconst input = params as SharedMemoryWriteInput;\n\t\t\tconst ensured = ensureContext(context);\n\t\t\tconst result = await writeSharedMemory(ensured, {\n\t\t\t\tkey: input.key,\n\t\t\t\tvalue: input.value,\n\t\t\t\tscope: normalizeScope(input.scope),\n\t\t\t\tmode: normalizeMode(input.mode),\n\t\t\t\tifVersion: input.if_version,\n\t\t\t}, _signal);\n\t\t\treturn {\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: `shared memory updated (${result.scope}:${result.key} v${result.version} by ${summarizeWriter(ensured)})`,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdetails: {\n\t\t\t\t\trunId: ensured.runId,\n\t\t\t\t\titem: summarizeSharedMemoryItemForDetails(result, false),\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport function createSharedMemoryReadTool(context: SharedMemoryContext): AgentTool<typeof sharedMemoryReadSchema> {\n\treturn {\n\t\tname: \"shared_memory_read\",\n\t\tlabel: \"shared_memory_read\",\n\t\tdescription:\n\t\t\t\"Read intermediate data from run-scoped shared memory (task-local or run-global view).\",\n\t\tparameters: sharedMemoryReadSchema,\n\t\texecute: async (_toolCallId: string, params: unknown, _signal?: AbortSignal) => {\n\t\t\tconst input = params as SharedMemoryReadInput;\n\t\t\tif (input.key && input.prefix) {\n\t\t\t\tthrow new Error(\"shared_memory_read accepts either key or prefix, not both\");\n\t\t\t}\n\t\t\tconst ensured = ensureContext(context);\n\t\t\tconst result = await readSharedMemory(ensured, {\n\t\t\t\tscope: normalizeScope(input.scope),\n\t\t\t\tkey: input.key,\n\t\t\t\tprefix: input.prefix,\n\t\t\t\tlimit: input.limit,\n\t\t\t\tincludeValues: input.include_values ?? false,\n\t\t\t}, _signal);\n\t\t\tconst header = `shared memory ${result.scope}: ${result.items.length}/${result.totalMatched}`;\n\t\t\tconst lines =\n\t\t\t\tresult.items.length === 0\n\t\t\t\t\t? [\"(no entries)\"]\n\t\t\t\t\t: result.items.map((item) => {\n\t\t\t\t\t\t\tconst writer = [\n\t\t\t\t\t\t\t\titem.writer.taskId ? `task=${item.writer.taskId}` : undefined,\n\t\t\t\t\t\t\t\titem.writer.delegateId ? `delegate=${item.writer.delegateId}` : undefined,\n\t\t\t\t\t\t\t\titem.writer.profile ? `profile=${item.writer.profile}` : undefined,\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t.filter((value): value is string => Boolean(value))\n\t\t\t\t\t\t\t\t.join(\" \");\n\t\t\t\t\t\t\tconst valuePart =\n\t\t\t\t\t\t\t\titem.value === undefined\n\t\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t\t: ` value=${item.value.length > 80 ? `${item.value.slice(0, 77)}...` : item.value}`;\n\t\t\t\t\t\t\treturn `- ${item.key} v${item.version}${writer ? ` (${writer})` : \"\"}${valuePart}`;\n\t\t\t\t\t\t});\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\" as const, text: [header, ...lines].join(\"\\n\") }],\n\t\t\t\tdetails: {\n\t\t\t\t\trunId: result.runId,\n\t\t\t\t\tscope: result.scope,\n\t\t\t\t\ttotalMatched: result.totalMatched,\n\t\t\t\t\titems: result.items.map((item) => summarizeSharedMemoryItemForDetails(item, input.include_values === true)),\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"file":"shared-memory.js","sourceRoot":"","sources":["../../../src/core/tools/shared-memory.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentTool } from \"@mariozechner/pi-agent-core\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport {\n\treadSharedMemory,\n\ttype SharedMemoryContext,\n\ttype SharedMemoryScope,\n\ttype SharedMemoryWriteMode,\n\twriteSharedMemory,\n} from \"../shared-memory.js\";\n\ntype SharedMemoryScopePolicy = \"legacy\" | \"warn\" | \"enforce\";\n\nfunction resolveSharedMemoryScopePolicy(raw: string | undefined): SharedMemoryScopePolicy {\n\tconst normalized = (raw ?? \"\").trim().toLowerCase();\n\tif (normalized === \"warn\") return \"warn\";\n\tif (normalized === \"enforce\") return \"enforce\";\n\treturn \"legacy\";\n}\n\nconst sharedMemoryScopePolicy = resolveSharedMemoryScopePolicy(process.env.IOSM_SHARED_MEMORY_SCOPE_POLICY);\n\nconst sharedMemoryWriteSchema = Type.Object({\n\tkey: Type.String({\n\t\tminLength: 1,\n\t\tdescription: \"Logical key for shared data within the current run (for example: findings/auth).\",\n\t}),\n\tvalue: Type.String({\n\t\tdescription: \"Text payload to store.\",\n\t}),\n\tscope: Type.Optional(\n\t\tType.Union([Type.Literal(\"run\"), Type.Literal(\"task\")], {\n\t\t\tdescription: \"run = visible to all tasks in run_id; task = isolated to current task_id.\",\n\t\t}),\n\t),\n\tmode: Type.Optional(\n\t\tType.Union([Type.Literal(\"set\"), Type.Literal(\"append\")], {\n\t\t\tdescription: \"set replaces value; append concatenates to existing value.\",\n\t\t}),\n\t),\n\tif_version: Type.Optional(\n\t\tType.Integer({\n\t\t\tminimum: 1,\n\t\t\tdescription: \"Optional CAS guard. Write succeeds only when current version matches this value.\",\n\t\t}),\n\t),\n});\n\nconst sharedMemoryReadSchema = Type.Object({\n\tkey: Type.Optional(\n\t\tType.String({\n\t\t\tminLength: 1,\n\t\t\tdescription: \"Exact key to read. Mutually exclusive with prefix.\",\n\t\t}),\n\t),\n\tprefix: Type.Optional(\n\t\tType.String({\n\t\t\tminLength: 1,\n\t\t\tdescription: \"Prefix filter for keys (for example: findings/).\",\n\t\t}),\n\t),\n\tscope: Type.Optional(\n\t\tType.Union([Type.Literal(\"run\"), Type.Literal(\"task\")], {\n\t\t\tdescription: \"run = visible to all tasks in run_id; task = isolated to current task_id.\",\n\t\t}),\n\t),\n\tlimit: Type.Optional(\n\t\tType.Integer({\n\t\t\tminimum: 1,\n\t\t\tmaximum: 100,\n\t\t\tdescription: \"Maximum entries to return (default 20).\",\n\t\t}),\n\t),\n\tinclude_values: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"When false (default), returns only metadata (key/version/writer).\",\n\t\t}),\n\t),\n});\n\nexport type SharedMemoryWriteInput = Static<typeof sharedMemoryWriteSchema>;\nexport type SharedMemoryReadInput = Static<typeof sharedMemoryReadSchema>;\n\nfunction summarizeSharedMemoryItemForDetails(\n\titem: {\n\t\tkey: string;\n\t\tscope: SharedMemoryScope;\n\t\tversion: number;\n\t\tupdatedAt: string;\n\t\twriter: { taskId?: string; delegateId?: string; profile?: string };\n\t\tvalue?: string;\n\t},\n\tincludeValuePreview: boolean,\n): Record<string, unknown> {\n\tconst base: Record<string, unknown> = {\n\t\tkey: item.key,\n\t\tscope: item.scope,\n\t\tversion: item.version,\n\t\tupdatedAt: item.updatedAt,\n\t\twriter: item.writer,\n\t};\n\tif (typeof item.value !== \"string\") return base;\n\tconst valueLength = item.value.length;\n\tif (!includeValuePreview) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tvalueLength,\n\t\t};\n\t}\n\treturn {\n\t\t...base,\n\t\tvalueLength,\n\t\tvaluePreview: item.value.length > 200 ? `${item.value.slice(0, 197)}...` : item.value,\n\t};\n}\n\nfunction ensureContext(context: SharedMemoryContext): SharedMemoryContext {\n\tif (!context.runId || !context.runId.trim()) {\n\t\tthrow new Error(\"shared memory is unavailable: missing run_id context\");\n\t}\n\treturn context;\n}\n\nfunction summarizeWriter(context: SharedMemoryContext): string {\n\tconst parts = [context.taskId ? `task=${context.taskId}` : undefined, context.delegateId ? `delegate=${context.delegateId}` : undefined]\n\t\t.filter((item): item is string => Boolean(item))\n\t\t.join(\" \");\n\treturn parts.length > 0 ? parts : \"root\";\n}\n\nfunction resolveScope(input: {\n\tscope: SharedMemoryScope | undefined;\n\tcontext: SharedMemoryContext;\n\toperation: \"read\" | \"write\";\n}): { scope: SharedMemoryScope; warning?: string } {\n\tif (input.scope) return { scope: input.scope };\n\tif (sharedMemoryScopePolicy === \"enforce\") {\n\t\tthrow new Error(\n\t\t\t`shared_memory_${input.operation} requires explicit scope (\"run\" or \"task\"). ` +\n\t\t\t\t`Set IOSM_SHARED_MEMORY_SCOPE_POLICY=legacy to restore implicit defaults.`,\n\t\t);\n\t}\n\tconst shouldWarn = sharedMemoryScopePolicy === \"warn\" || input.context.profile === \"meta\";\n\tif (!shouldWarn) {\n\t\treturn { scope: \"task\" };\n\t}\n\treturn {\n\t\tscope: \"task\",\n\t\twarning: `scope omitted -> defaulted to \"task\" for shared_memory_${input.operation}. Pass explicit scope to avoid ambiguity.`,\n\t};\n}\n\nfunction normalizeMode(mode: SharedMemoryWriteMode | undefined): SharedMemoryWriteMode {\n\treturn mode ?? \"set\";\n}\n\nexport function createSharedMemoryWriteTool(context: SharedMemoryContext): AgentTool<typeof sharedMemoryWriteSchema> {\n\treturn {\n\t\tname: \"shared_memory_write\",\n\t\tlabel: \"shared_memory_write\",\n\t\tdescription:\n\t\t\t\"Write intermediate data into run-scoped shared memory so parallel agents/delegates can exchange state.\",\n\t\tparameters: sharedMemoryWriteSchema,\n\t\texecute: async (_toolCallId: string, params: unknown, _signal?: AbortSignal) => {\n\t\t\tconst input = params as SharedMemoryWriteInput;\n\t\t\tconst ensured = ensureContext(context);\n\t\t\tconst scopeResolution = resolveScope({\n\t\t\t\tscope: input.scope,\n\t\t\t\tcontext: ensured,\n\t\t\t\toperation: \"write\",\n\t\t\t});\n\t\t\tconst result = await writeSharedMemory(ensured, {\n\t\t\t\tkey: input.key,\n\t\t\t\tvalue: input.value,\n\t\t\t\tscope: scopeResolution.scope,\n\t\t\t\tmode: normalizeMode(input.mode),\n\t\t\t\tifVersion: input.if_version,\n\t\t\t}, _signal);\n\t\t\tconst warningLine = scopeResolution.warning ? `\\nwarning: ${scopeResolution.warning}` : \"\";\n\t\t\treturn {\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: `shared memory updated (${result.scope}:${result.key} v${result.version} by ${summarizeWriter(ensured)})${warningLine}`,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdetails: {\n\t\t\t\t\trunId: ensured.runId,\n\t\t\t\t\titem: summarizeSharedMemoryItemForDetails(result, false),\n\t\t\t\t\tscopePolicy: sharedMemoryScopePolicy,\n\t\t\t\t\tscopeWarning: scopeResolution.warning,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport function createSharedMemoryReadTool(context: SharedMemoryContext): AgentTool<typeof sharedMemoryReadSchema> {\n\treturn {\n\t\tname: \"shared_memory_read\",\n\t\tlabel: \"shared_memory_read\",\n\t\tdescription:\n\t\t\t\"Read intermediate data from run-scoped shared memory (task-local or run-global view).\",\n\t\tparameters: sharedMemoryReadSchema,\n\t\texecute: async (_toolCallId: string, params: unknown, _signal?: AbortSignal) => {\n\t\t\tconst input = params as SharedMemoryReadInput;\n\t\t\tif (input.key && input.prefix) {\n\t\t\t\tthrow new Error(\"shared_memory_read accepts either key or prefix, not both\");\n\t\t\t}\n\t\t\tconst ensured = ensureContext(context);\n\t\t\tconst scopeResolution = resolveScope({\n\t\t\t\tscope: input.scope,\n\t\t\t\tcontext: ensured,\n\t\t\t\toperation: \"read\",\n\t\t\t});\n\t\t\tconst result = await readSharedMemory(ensured, {\n\t\t\t\tscope: scopeResolution.scope,\n\t\t\t\tkey: input.key,\n\t\t\t\tprefix: input.prefix,\n\t\t\t\tlimit: input.limit,\n\t\t\t\tincludeValues: input.include_values ?? false,\n\t\t\t}, _signal);\n\t\t\tconst header = `shared memory ${result.scope}: ${result.items.length}/${result.totalMatched}`;\n\t\t\tconst lines =\n\t\t\t\tresult.items.length === 0\n\t\t\t\t\t? [\"(no entries)\"]\n\t\t\t\t\t: result.items.map((item) => {\n\t\t\t\t\t\t\tconst writer = [\n\t\t\t\t\t\t\t\titem.writer.taskId ? `task=${item.writer.taskId}` : undefined,\n\t\t\t\t\t\t\t\titem.writer.delegateId ? `delegate=${item.writer.delegateId}` : undefined,\n\t\t\t\t\t\t\t\titem.writer.profile ? `profile=${item.writer.profile}` : undefined,\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t.filter((value): value is string => Boolean(value))\n\t\t\t\t\t\t\t\t.join(\" \");\n\t\t\t\t\t\t\tconst valuePart =\n\t\t\t\t\t\t\t\titem.value === undefined\n\t\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t\t: ` value=${item.value.length > 80 ? `${item.value.slice(0, 77)}...` : item.value}`;\n\t\t\t\t\t\t\treturn `- ${item.key} v${item.version}${writer ? ` (${writer})` : \"\"}${valuePart}`;\n\t\t\t\t\t\t});\n\t\t\tif (scopeResolution.warning) {\n\t\t\t\tlines.unshift(`warning: ${scopeResolution.warning}`);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\" as const, text: [header, ...lines].join(\"\\n\") }],\n\t\t\t\tdetails: {\n\t\t\t\t\trunId: result.runId,\n\t\t\t\t\tscope: result.scope,\n\t\t\t\t\ttotalMatched: result.totalMatched,\n\t\t\t\t\titems: result.items.map((item) => summarizeSharedMemoryItemForDetails(item, input.include_values === true)),\n\t\t\t\t\tscopePolicy: sharedMemoryScopePolicy,\n\t\t\t\t\tscopeWarning: scopeResolution.warning,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { AgentTool } from "@mariozechner/pi-agent-core";
2
2
  import { type Static } from "@sinclair/typebox";
3
3
  import { type FailureCause } from "../failure-retrospective.js";
4
- import type { SharedMemoryContext } from "../shared-memory.js";
4
+ import { type SharedMemoryContext } from "../shared-memory.js";
5
5
  import type { CustomSubagentDefinition } from "../subagents.js";
6
6
  /**
7
7
  * Callback type passed in from sdk.ts to avoid circular imports.
@@ -94,6 +94,17 @@ export interface TaskToolDetails {
94
94
  retrospectiveAttempts?: number;
95
95
  retrospectiveRecovered?: number;
96
96
  failureCauses?: Partial<Record<FailureCause, number>>;
97
+ coordination?: {
98
+ sharedMemoryWrites?: number;
99
+ currentTaskWrites?: number;
100
+ currentTaskDelegateWrites?: number;
101
+ runScopeWrites?: number;
102
+ taskScopeWrites?: number;
103
+ duplicatesDetected?: number;
104
+ claimKeysMatched?: number;
105
+ claimCollisions?: number;
106
+ };
107
+ sharedMemorySummaryKey?: string;
97
108
  }
98
109
  export interface TaskToolOptions {
99
110
  resolveCustomSubagent?: (name: string) => CustomSubagentDefinition | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/core/tools/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/core/tools/task.ts"],"names":[],"mappings":"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"}