@namzu/sdk 52.1.0 → 52.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +1 -1
  3. package/dist/connector/tools/adapter.d.ts +2 -2
  4. package/dist/contracts/a2a.d.ts +92 -92
  5. package/dist/manager/resident/learning.d.ts +6 -6
  6. package/dist/manager/resident/store.d.ts +4 -4
  7. package/dist/pals/activity/subscription-schema.d.ts +48 -48
  8. package/dist/pals/communication/ingress-schema.d.ts +192 -192
  9. package/dist/pals/communication/schema.d.ts +18 -18
  10. package/dist/peers/protocol.d.ts +36 -36
  11. package/dist/public-runtime.d.ts +1 -0
  12. package/dist/public-runtime.d.ts.map +1 -1
  13. package/dist/public-runtime.js.map +1 -1
  14. package/dist/public-tools.d.ts +1 -0
  15. package/dist/public-tools.d.ts.map +1 -1
  16. package/dist/public-tools.js +1 -0
  17. package/dist/public-tools.js.map +1 -1
  18. package/dist/runtime/query/executor.d.ts +1 -0
  19. package/dist/runtime/query/executor.d.ts.map +1 -1
  20. package/dist/runtime/query/executor.js +1 -0
  21. package/dist/runtime/query/executor.js.map +1 -1
  22. package/dist/runtime/query/index.d.ts +2 -0
  23. package/dist/runtime/query/index.d.ts.map +1 -1
  24. package/dist/runtime/query/index.js +1 -0
  25. package/dist/runtime/query/index.js.map +1 -1
  26. package/dist/runtime/query/tooling.d.ts +1 -0
  27. package/dist/runtime/query/tooling.d.ts.map +1 -1
  28. package/dist/runtime/query/tooling.js +1 -0
  29. package/dist/runtime/query/tooling.js.map +1 -1
  30. package/dist/tools/builtins/browser.d.ts +4 -4
  31. package/dist/tools/builtins/code-analysis.d.ts +49 -0
  32. package/dist/tools/builtins/code-analysis.d.ts.map +1 -0
  33. package/dist/tools/builtins/code-analysis.js +409 -0
  34. package/dist/tools/builtins/code-analysis.js.map +1 -0
  35. package/dist/tools/builtins/computer-use.d.ts +24 -24
  36. package/dist/tools/builtins/index.d.ts +1 -0
  37. package/dist/tools/builtins/index.d.ts.map +1 -1
  38. package/dist/tools/builtins/index.js +1 -0
  39. package/dist/tools/builtins/index.js.map +1 -1
  40. package/dist/tools/builtins/lsp.d.ts +1 -1
  41. package/dist/tools/builtins/skill.d.ts +2 -2
  42. package/dist/types/code-analysis/index.d.ts +299 -0
  43. package/dist/types/code-analysis/index.d.ts.map +1 -0
  44. package/dist/types/code-analysis/index.js +30 -0
  45. package/dist/types/code-analysis/index.js.map +1 -0
  46. package/dist/types/plugin/index.d.ts +6 -6
  47. package/dist/types/session/records.d.ts +127 -127
  48. package/dist/types/tool/index.d.ts +9 -0
  49. package/dist/types/tool/index.d.ts.map +1 -1
  50. package/dist/types/tool/index.js.map +1 -1
  51. package/package.json +2 -2
  52. package/src/public-runtime.ts +25 -0
  53. package/src/public-tools.ts +5 -0
  54. package/src/runtime/query/executor.ts +2 -0
  55. package/src/runtime/query/index.ts +3 -0
  56. package/src/runtime/query/tooling.ts +2 -0
  57. package/src/tools/builtins/code-analysis.ts +486 -0
  58. package/src/tools/builtins/index.ts +5 -0
  59. package/src/types/code-analysis/index.ts +325 -0
  60. package/src/types/tool/index.ts +9 -0
@@ -0,0 +1,409 @@
1
+ import { realpath, stat } from 'node:fs/promises';
2
+ import { z } from 'zod';
3
+ import { defineTool } from '../defineTool.js';
4
+ import { isWithin, resolveWithinAnyReal, toolRoots } from '../paths.js';
5
+ /**
6
+ * Cited lookups over a semantic index of JavaScript and TypeScript.
7
+ *
8
+ * For the question `grep` answers with a line and nothing around it: *this
9
+ * string is in the code — which function is it in, what is that function's
10
+ * whole source, and what calls it?* It is built for code nobody wrote for you
11
+ * to read (a minified bundle, a vendored build), where the function has no
12
+ * useful name and the line is 40,000 characters wide.
13
+ *
14
+ * **Not in `getBuiltinTools()`, and not registered when no provider is
15
+ * configured**, for the reason `lsp` is not: a tool that is always present
16
+ * and always answers "unavailable" costs a decision on every turn to say
17
+ * nothing. See `tools/builtins/lsp.ts`.
18
+ *
19
+ * ## One path argument, one boundary
20
+ *
21
+ * Every operation takes `path`, declared as this tool's `pathArgument`, and
22
+ * resolves it with `resolveWithinAnyReal` over `toolRoots` — the resolver and
23
+ * the review route `read` and `grep` use. A path outside the roots is
24
+ * reviewed before the call runs when the host reviews such paths, and refused
25
+ * with the same message otherwise. There is no second way past the boundary:
26
+ * the index is built from files under a directory THIS tool has just
27
+ * resolved, never from a path the model supplied to the provider directly.
28
+ */
29
+ /** Items per page when the call names none. */
30
+ const DEFAULT_LIMIT = 50;
31
+ /** The most a page may hold, whatever the call asks for. */
32
+ const MAX_LIMIT = 200;
33
+ /** Source characters shown when the call names no cap. */
34
+ const DEFAULT_MAX_CHARS = 20_000;
35
+ const MAX_MAX_CHARS = 200_000;
36
+ const paging = {
37
+ limit: z
38
+ .number()
39
+ .int()
40
+ .min(1)
41
+ .max(MAX_LIMIT)
42
+ .optional()
43
+ .describe(`Results per page (default ${DEFAULT_LIMIT}, max ${MAX_LIMIT}).`),
44
+ cursor: z.string().optional().describe('`next cursor` from the previous page, unchanged.'),
45
+ };
46
+ const maxChars = z
47
+ .number()
48
+ .int()
49
+ .min(200)
50
+ .max(MAX_MAX_CHARS)
51
+ .optional()
52
+ .describe(`Cap on source shown (default ${DEFAULT_MAX_CHARS}); a cut is reported.`);
53
+ // Descriptions are short on purpose: this schema is sent with every request,
54
+ // and the first draft of it cost four times what `grep`'s does.
55
+ const indexOp = z.object({
56
+ operation: z
57
+ .literal('index')
58
+ .describe('Build or refresh the index (incremental). Other operations build it on first use.'),
59
+ path: z.string().optional().describe('A session directory; defaults to the working directory.'),
60
+ force: z.boolean().optional().describe('Re-read every file.'),
61
+ });
62
+ const findLiteralOp = z.object({
63
+ operation: z
64
+ .literal('find_literal')
65
+ .describe('Find string/template literals containing `text`, each with its enclosing function.'),
66
+ text: z.string().min(1),
67
+ path: z
68
+ .string()
69
+ .optional()
70
+ .describe('File or directory to search; defaults to the working directory.'),
71
+ case_sensitive: z.boolean().optional().describe('Default true.'),
72
+ ...paging,
73
+ });
74
+ const enclosingOp = z.object({
75
+ operation: z
76
+ .literal('enclosing_function')
77
+ .describe('The function containing a position: exact source, line range, parent chain.'),
78
+ path: z.string(),
79
+ line: z.number().int().min(1).describe('1-based.'),
80
+ column: z
81
+ .number()
82
+ .int()
83
+ .min(1)
84
+ .optional()
85
+ .describe('1-based UTF-16 column (default 1); needed on minified lines.'),
86
+ max_chars: maxChars,
87
+ });
88
+ const functionSourceOp = z.object({
89
+ operation: z
90
+ .literal('function_source')
91
+ .describe("A function's exact source, by `function_id` from a result, or by `path` and `name`."),
92
+ function_id: z.number().int().min(0).optional(),
93
+ path: z.string().optional(),
94
+ name: z.string().min(1).optional(),
95
+ max_chars: maxChars,
96
+ ...paging,
97
+ });
98
+ const callersOp = z.object({
99
+ operation: z
100
+ .literal('callers_of')
101
+ .describe('Call sites of a callee TEXT (not scope-aware), each with its caller. Per file by default.'),
102
+ name: z.string().min(1).describe('Callee text: `foo`, `obj.foo`, `this.foo`.'),
103
+ scope: z
104
+ .enum(['file', 'workspace'])
105
+ .optional()
106
+ .describe('`file` (default) needs `path`; `workspace` mixes same-named functions.'),
107
+ path: z.string().optional(),
108
+ match: z.enum(['exact', 'member']).optional().describe('`member` also matches `<expr>.name`.'),
109
+ ...paging,
110
+ });
111
+ const importsOp = z.object({
112
+ operation: z.literal('imports').describe("One file's imports and exports."),
113
+ path: z.string(),
114
+ ...paging,
115
+ });
116
+ const inputSchema = z.discriminatedUnion('operation', [
117
+ indexOp,
118
+ findLiteralOp,
119
+ enclosingOp,
120
+ functionSourceOp,
121
+ callersOp,
122
+ importsOp,
123
+ ]);
124
+ export const CODE_ANALYSIS_TOOL_NAME = 'code_analysis';
125
+ export const CodeAnalysisTool = defineTool({
126
+ name: CODE_ANALYSIS_TOOL_NAME,
127
+ // The first sentence is the discovery hint a deferred listing shows (about
128
+ // 100 characters), so it carries the two reasons to reach for this tool.
129
+ description: "Find which function holds a string in minified or unfamiliar JS/TS bundles; read it, list callers. Paged and cited as path:line:column; each result says what was observed, what was inferred and whether coverage is complete. Also lists a file's imports.",
130
+ inputSchema,
131
+ category: 'filesystem',
132
+ // Declared so a path outside the turn's roots can be reviewed before the
133
+ // call runs, rather than refused after. See `ToolDefinition.pathArgument`.
134
+ pathArgument: 'path',
135
+ permissions: ['file_read'],
136
+ // Reads source files and writes only its own cache, outside the roots.
137
+ readOnly: true,
138
+ destructive: false,
139
+ concurrencySafe: true,
140
+ async execute(input, context) {
141
+ const provider = context.codeAnalysis;
142
+ if (!provider) {
143
+ return fail('This turn has no code analysis provider, so there is no index to query. A host supplies one on the tool context; `grep` is the fallback, and it answers a different question.');
144
+ }
145
+ if (context.sandbox) {
146
+ // The index reads the HOST file system. In a sandboxed turn the
147
+ // workspace the model sees is not that one, and answering from the
148
+ // host would cite files the turn cannot open.
149
+ return fail('This turn runs in a sandbox, and the code index reads the host file system, not the sandbox workspace. Use `grep` and `read` here.');
150
+ }
151
+ const roots = toolRoots(context);
152
+ let target;
153
+ try {
154
+ // The SAME resolver `read` runs, so a path is on one side of the
155
+ // boundary for both tools or for neither.
156
+ target = await resolveWithinAnyReal(roots, input.path);
157
+ }
158
+ catch (err) {
159
+ return fail(err instanceof Error ? err.message : String(err));
160
+ }
161
+ // `function_id` alone names no path; the root is then the working one.
162
+ const owner = await owningRoot(roots, target);
163
+ if (owner.kind === 'file') {
164
+ return fail(`${target} was reached as a single file, not through a directory this turn may read, and the index is built over a directory. Ask the user to add its directory to the session.`);
165
+ }
166
+ if (owner.kind === 'none') {
167
+ return fail(`No readable directory of this turn contains ${target}.`);
168
+ }
169
+ const root = owner.root;
170
+ switch (input.operation) {
171
+ case 'index': {
172
+ const result = await provider.index({
173
+ root,
174
+ // A narrower path indexes just that part of the root, which is
175
+ // how a root too big to index whole is covered in steps.
176
+ ...(target !== root ? { scope: target } : {}),
177
+ ...(input.force ? { force: true } : {}),
178
+ ...signalOf(context),
179
+ });
180
+ return render(result, (value) => {
181
+ const f = value.files;
182
+ const lines = [
183
+ `Indexed ${value.root}: ${f.indexed} files (${f.parsed} parsed, ${f.unchanged} unchanged, ${f.removed} removed, ${f.skipped} skipped, ${f.withParseErrors} with parse errors) in ${value.durationMs} ms.`,
184
+ `${value.functions} functions, ${value.strings} string literals, ${value.calls} calls. ${value.persisted ? 'Cached on disk.' : 'Held in memory only; it is gone when this process exits.'}`,
185
+ ];
186
+ if (value.truncated)
187
+ lines.push(value.truncated);
188
+ const reasons = Object.entries(value.skippedReasons);
189
+ if (reasons.length > 0) {
190
+ lines.push(`Skipped: ${reasons.map(([why, n]) => `${n} ${why}`).join(', ')}.`);
191
+ }
192
+ return lines;
193
+ });
194
+ }
195
+ case 'find_literal': {
196
+ const result = await provider.findLiteral({
197
+ root,
198
+ text: input.text,
199
+ path: target,
200
+ ...(input.case_sensitive === false ? { caseSensitive: false } : {}),
201
+ ...pageArgs(input),
202
+ ...signalOf(context),
203
+ });
204
+ return renderPage(result, (hit) => {
205
+ const where = `${hit.path}:${hit.line}:${hit.column}`;
206
+ const shown = JSON.stringify(hit.value) + (hit.valueTruncated ? ' (cut)' : '');
207
+ const inside = hit.function ? ` in ${describeFunction(hit.function)}` : ' at top level';
208
+ return `${where} ${hit.kind} ${shown}${inside}${staleMark(hit.stale)}`;
209
+ });
210
+ }
211
+ case 'enclosing_function': {
212
+ const result = await provider.enclosingFunction({
213
+ root,
214
+ path: target,
215
+ line: input.line,
216
+ ...(input.column !== undefined ? { column: input.column } : {}),
217
+ maxChars: input.max_chars ?? DEFAULT_MAX_CHARS,
218
+ ...signalOf(context),
219
+ });
220
+ return render(result, (value) => {
221
+ if (!value.function) {
222
+ return [`${target}:${input.line}:${input.column ?? 1} is not inside any function.`];
223
+ }
224
+ const lines = [`${describeFunction(value.function)}`];
225
+ if (value.parents.length > 0) {
226
+ lines.push(`parents: ${value.parents.map(describeFunction).join(' < ')}`);
227
+ }
228
+ if (value.source)
229
+ lines.push(...sourceLines(value.source));
230
+ return lines;
231
+ });
232
+ }
233
+ case 'function_source': {
234
+ if (input.function_id === undefined && !(input.path !== undefined && input.name)) {
235
+ return fail('function_source needs `function_id`, or `path` together with `name`.');
236
+ }
237
+ const result = await provider.functionSource({
238
+ root,
239
+ ...(input.function_id !== undefined ? { id: input.function_id } : {}),
240
+ ...(input.name ? { name: input.name, path: target } : {}),
241
+ maxChars: input.max_chars ?? DEFAULT_MAX_CHARS,
242
+ ...pageArgs(input),
243
+ ...signalOf(context),
244
+ });
245
+ return renderPage(result, (item) => [
246
+ describeFunction(item.function),
247
+ item.parents.length > 0
248
+ ? `parents: ${item.parents.map(describeFunction).join(' < ')}`
249
+ : undefined,
250
+ ...sourceLines(item.source),
251
+ ]
252
+ .filter((l) => l !== undefined)
253
+ .join('\n'));
254
+ }
255
+ case 'callers_of': {
256
+ const scope = input.scope ?? 'file';
257
+ if (scope === 'file' && input.path === undefined) {
258
+ return fail('callers_of looks in one file by default, so it needs `path`. Pass `scope: "workspace"` to search the whole index; it matches by name only and will mix unrelated functions that share one.');
259
+ }
260
+ const result = await provider.callersOf({
261
+ root,
262
+ name: input.name,
263
+ scope,
264
+ ...(input.path !== undefined ? { path: target } : {}),
265
+ ...(input.match ? { match: input.match } : {}),
266
+ ...pageArgs(input),
267
+ ...signalOf(context),
268
+ });
269
+ return renderPage(result, (site) => {
270
+ const inside = site.caller ? ` in ${describeFunction(site.caller)}` : ' at top level';
271
+ return `${site.path}:${site.line}:${site.column} ${site.kind === 'new' ? 'new ' : ''}${site.callee}(${site.argumentCount} arg${site.argumentCount === 1 ? '' : 's'})${inside}${staleMark(site.stale)}`;
272
+ });
273
+ }
274
+ case 'imports': {
275
+ const result = await provider.imports({
276
+ root,
277
+ path: target,
278
+ ...pageArgs(input),
279
+ ...signalOf(context),
280
+ });
281
+ return renderPage(result, (edge) => describeEdge(edge, target));
282
+ }
283
+ }
284
+ },
285
+ });
286
+ function signalOf(context) {
287
+ return context.abortSignal ? { signal: context.abortSignal } : {};
288
+ }
289
+ function staleMark(stale) {
290
+ if (stale === 'deleted')
291
+ return ' [file deleted since indexed]';
292
+ if (stale === 'changed')
293
+ return ' [file changed since indexed; position may be off]';
294
+ return '';
295
+ }
296
+ function fail(error) {
297
+ return { success: false, output: '', error };
298
+ }
299
+ function pageArgs(input) {
300
+ return {
301
+ limit: input.limit ?? DEFAULT_LIMIT,
302
+ ...(input.cursor !== undefined ? { cursor: input.cursor } : {}),
303
+ };
304
+ }
305
+ /**
306
+ * The directory of this turn that contains `target`, canonicalised.
307
+ *
308
+ * Roots are directories except when an approval named a single file: that
309
+ * file is a root for ONE call, and indexing its parent would read what the
310
+ * approval never covered. So a file reached only that way is refused rather
311
+ * than widened.
312
+ */
313
+ async function owningRoot(roots, target) {
314
+ let sawFile = false;
315
+ for (const candidate of roots) {
316
+ let real;
317
+ try {
318
+ real = await realpath(candidate);
319
+ if (!(await stat(real)).isDirectory()) {
320
+ if (isWithin(real, target) || real === target)
321
+ sawFile = true;
322
+ continue;
323
+ }
324
+ }
325
+ catch {
326
+ continue;
327
+ }
328
+ if (isWithin(real, target))
329
+ return { kind: 'dir', root: real };
330
+ }
331
+ return sawFile ? { kind: 'file' } : { kind: 'none' };
332
+ }
333
+ function describeFunction(fn) {
334
+ const lines = fn.endLine === fn.line ? `line ${fn.line}` : `lines ${fn.line}-${fn.endLine}`;
335
+ return `${fn.name ?? '(anonymous)'} [${fn.kind}, id ${fn.id}] ${fn.path}:${fn.line}:${fn.column} (${lines})`;
336
+ }
337
+ function describeEdge(edge, path) {
338
+ const where = `${path}:${edge.line}:${edge.column}`;
339
+ if (edge.direction === 'import') {
340
+ const names = edge.names.length > 0 ? ` { ${edge.names.join(', ')} }` : '';
341
+ return `${where} import (${edge.kind})${names} from ${JSON.stringify(edge.source)}`;
342
+ }
343
+ const from = edge.source !== undefined ? ` from ${JSON.stringify(edge.source)}` : '';
344
+ return `${where} export (${edge.kind}) ${edge.name}${from}`;
345
+ }
346
+ function sourceLines(slice) {
347
+ const lines = ['--- source ---', slice.text];
348
+ if (slice.truncated) {
349
+ lines.push(`--- cut: showing ${slice.text.length} of ${slice.chars} characters; raise max_chars to see more ---`);
350
+ }
351
+ return lines;
352
+ }
353
+ function evidenceLines(evidence) {
354
+ const lines = [];
355
+ if (evidence.observed.length > 0)
356
+ lines.push(`observed: ${evidence.observed.join('; ')}`);
357
+ if (evidence.inferred.length > 0)
358
+ lines.push(`inferred: ${evidence.inferred.join('; ')}`);
359
+ lines.push(evidence.coverage.status === 'complete'
360
+ ? 'coverage: complete'
361
+ : `coverage: partial - ${evidence.coverage.reasons.join('; ')}`);
362
+ return lines;
363
+ }
364
+ function render(result, body, data) {
365
+ switch (result.kind) {
366
+ case 'ok':
367
+ return {
368
+ success: true,
369
+ output: [...body(result.value), ...evidenceLines(result.evidence)].join('\n'),
370
+ data: {
371
+ value: data ? data(result.value) : result.value,
372
+ evidence: result.evidence,
373
+ },
374
+ };
375
+ case 'unsupported':
376
+ // Distinct from a failure so the model can fall back and know why.
377
+ return fail(`${result.reason} Fall back to \`grep\`, and treat the result as textual rather than resolved.`);
378
+ case 'failed':
379
+ // NOT an empty result. An agent told a name has no callers deletes it.
380
+ return fail(`Code analysis failed, so this answer is unknown rather than empty: ${result.error}`);
381
+ }
382
+ }
383
+ function renderPage(result, line) {
384
+ return render(result, (page) => {
385
+ if (page.items.length === 0) {
386
+ return [page.total === 0 ? 'No results.' : 'No results on this page.'];
387
+ }
388
+ const lines = page.items.map(line);
389
+ lines.push(page.nextCursor !== undefined
390
+ ? `-- ${page.items.length} of ${page.total} shown. next cursor: ${page.nextCursor}`
391
+ : `-- ${page.items.length} of ${page.total} shown. last page.`);
392
+ return lines;
393
+ }, (page) => ({
394
+ total: page.total,
395
+ count: page.items.length,
396
+ items: page.items,
397
+ ...(page.nextCursor !== undefined ? { nextCursor: page.nextCursor } : {}),
398
+ }));
399
+ }
400
+ /**
401
+ * The tool, only when there is something for it to call.
402
+ *
403
+ * A function rather than a constant because the decision is per turn: the
404
+ * same process can serve one session with an index and one without.
405
+ */
406
+ export function getCodeAnalysisTools(provider) {
407
+ return provider ? [CodeAnalysisTool] : [];
408
+ }
409
+ //# sourceMappingURL=code-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-analysis.js","sourceRoot":"","sources":["../../../src/tools/builtins/code-analysis.ts"],"names":[],"mappings":"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"}