agent-readable-ts 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACvF,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIhE,oCAAoC;AACpC,MAAM,MAAM,WAAW,GACnB;IAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GACjC,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAKjC,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAE5D;AAED,gDAAgD;AAChD,wBAAgB,aAAa,IAAI,WAAW,GAAG,IAAI,CAElD;AAmCD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAuB9E"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * agent-readable-ts
3
+ *
4
+ * Attach agent-oriented documentation to any class, object, or function.
5
+ * Coding agents call `agentHelp(target)` to see the real callable surface
6
+ * and author-supplied behavioral rules before writing code against the target.
7
+ *
8
+ * This module is the orchestrator: it handles the `AgentHelper` full-replacement
9
+ * path and the advisory warning sink, then delegates to `model.ts` (extraction
10
+ * into a format-neutral `HelpDoc`) and `render.ts` (Markdown rendering).
11
+ */
12
+ import { hasAgentHelper, hasAgentNoter } from "./protocol.js";
13
+ import { FAILED, safeCall, isClassConstructor, protoOf, buildClassDoc, buildObjectDoc, buildFunctionDoc, } from "./model.js";
14
+ import { renderMarkdown } from "./render.js";
15
+ let warnSink = typeof process !== "undefined" && process.stderr ? process.stderr : null;
16
+ /** Replace the advisory warning sink. Pass `null` to silence warnings. */
17
+ export function setWarnOutput(sink) {
18
+ warnSink = sink;
19
+ }
20
+ /** Return the current advisory warning sink. */
21
+ export function getWarnOutput() {
22
+ return warnSink;
23
+ }
24
+ function warn(message) {
25
+ if (warnSink === null)
26
+ return;
27
+ try {
28
+ if (typeof warnSink === "function") {
29
+ warnSink(message + "\n");
30
+ }
31
+ else {
32
+ warnSink.write(message + "\n");
33
+ }
34
+ }
35
+ catch {
36
+ // swallow
37
+ }
38
+ }
39
+ // ── AgentHelper full-replacement path ───────────────────────────────────────────
40
+ function tryAgentHelperOutput(receiver) {
41
+ if (!hasAgentHelper(receiver))
42
+ return null;
43
+ const hadNotes = hasAgentNoter(receiver);
44
+ const result = safeCall(() => receiver.agentHelp());
45
+ if (result !== FAILED) {
46
+ if (hadNotes) {
47
+ warn("agentNotes() is ignored because agentHelp() owns the full output.");
48
+ }
49
+ const str = String(result);
50
+ return str.endsWith("\n") ? str : str + "\n";
51
+ }
52
+ return null;
53
+ }
54
+ // ── public API ──────────────────────────────────────────────────────────────────
55
+ const NULL_MSG = "No documentation available: null or undefined value.\n";
56
+ /**
57
+ * Return agent-oriented help for a class constructor, class instance,
58
+ * plain object, function, arrow function, bound method, or callable object.
59
+ *
60
+ * If the target implements `AgentHelper.agentHelp()`, the returned string is
61
+ * used verbatim. Otherwise auto-generated documentation is produced from
62
+ * safe runtime introspection, with any `AgentNoter.agentNotes()` appended.
63
+ */
64
+ export function agentHelp(target, typeSigs) {
65
+ if (target === null || target === undefined) {
66
+ return NULL_MSG;
67
+ }
68
+ // AgentHelper: full replacement (direct target or class prototype)
69
+ const directOutput = tryAgentHelperOutput(target);
70
+ if (directOutput !== null)
71
+ return directOutput;
72
+ if (typeof target === "function") {
73
+ if (isClassConstructor(target)) {
74
+ const proto = protoOf(target);
75
+ if (proto) {
76
+ const instance = Object.create(proto);
77
+ const protoOutput = tryAgentHelperOutput(instance);
78
+ if (protoOutput !== null)
79
+ return protoOutput;
80
+ }
81
+ return renderMarkdown(buildClassDoc(target, null, typeSigs));
82
+ }
83
+ return renderMarkdown(buildFunctionDoc(target, typeSigs));
84
+ }
85
+ return renderMarkdown(buildObjectDoc(target, typeSigs)); // NOSONAR: narrowed by earlier typeof/function checks
86
+ }
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Structured, format-neutral model of agent-oriented documentation.
3
+ *
4
+ * This module owns **extraction**: turning a class, instance, plain object, or
5
+ * function into a {@link HelpDoc} — a renderer-agnostic intermediate
6
+ * representation. A renderer (see `render.ts` for the Markdown one) turns a
7
+ * `HelpDoc` into a concrete string. Keeping the two apart means new output
8
+ * formats (plain text, HTML, JSON for MCP servers) only need a new renderer;
9
+ * the introspection logic here is shared by all of them.
10
+ */
11
+ /** Parameter type info extracted from TypeScript source. */
12
+ export interface ParamTypeInfo {
13
+ name: string;
14
+ type: string;
15
+ }
16
+ /** Method/function type signature extracted from TypeScript source. */
17
+ export interface MethodTypeSignature {
18
+ params: ParamTypeInfo[];
19
+ returnType: string | null;
20
+ }
21
+ /** Map from member name to its TypeScript type signature. */
22
+ export type TypeSignatureMap = Map<string, MethodTypeSignature>;
23
+ /** One public member of a class, instance, or plain object. */
24
+ export interface HelpMember {
25
+ name: string;
26
+ kind: "method" | "accessor" | "property";
27
+ /** Call signature starting at `(` (e.g. `"(key: string): unknown"`); `null` for non-callable members. */
28
+ signature: string | null;
29
+ }
30
+ /** One class's `agentNotes()` contribution. */
31
+ export interface HelpNote {
32
+ className: string;
33
+ /** Ancestor class names this note overrides (leaf only); empty otherwise. */
34
+ inherited: string[];
35
+ body: string;
36
+ }
37
+ /**
38
+ * Format-neutral model of an object's agent-oriented documentation.
39
+ *
40
+ * A single shape covers classes, objects, and functions: each populates the
41
+ * fields that apply to it and leaves the rest at their empty defaults. A
42
+ * `null` `members` means "no Public API section" (functions); an empty array
43
+ * means the section renders with `(none)`. A non-null `signature` is a
44
+ * function's call signature.
45
+ */
46
+ export interface HelpDoc {
47
+ title: string;
48
+ signature: string | null;
49
+ members: HelpMember[] | null;
50
+ usageRules: string[];
51
+ notes: HelpNote[];
52
+ }
53
+ export declare const FAILED: unique symbol;
54
+ export declare function safeCall<T>(fn: () => T): T | typeof FAILED;
55
+ export declare function protoOf(ctor: Function): object | null;
56
+ export declare function isClassConstructor(fn: Function): boolean;
57
+ export declare function buildClassDoc(ctor: Function, instance: unknown, typeSigs?: TypeSignatureMap): HelpDoc;
58
+ export declare function buildObjectDoc(target: object, typeSigs?: TypeSignatureMap): HelpDoc;
59
+ export declare function buildFunctionDoc(fn: Function, typeSigs?: TypeSignatureMap): HelpDoc;
60
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAIhE,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;IACzC,yGAAyG;IACzG,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,+CAA+C;AAC/C,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AA+BD,eAAO,MAAM,MAAM,eAAmB,CAAC;AAEvC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,MAAM,CAM1D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAGrD;AAYD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAMxD;AAuXD,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAQrG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAYnF;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CASnF"}
@@ -0,0 +1,426 @@
1
+ /**
2
+ * Structured, format-neutral model of agent-oriented documentation.
3
+ *
4
+ * This module owns **extraction**: turning a class, instance, plain object, or
5
+ * function into a {@link HelpDoc} — a renderer-agnostic intermediate
6
+ * representation. A renderer (see `render.ts` for the Markdown one) turns a
7
+ * `HelpDoc` into a concrete string. Keeping the two apart means new output
8
+ * formats (plain text, HTML, JSON for MCP servers) only need a new renderer;
9
+ * the introspection logic here is shared by all of them.
10
+ */
11
+ import { hasAgentNoter } from "./protocol.js";
12
+ const CLASS_RULES = [
13
+ "- Prefer the public API listed above.",
14
+ "- Do not use private, protected, underscored, or internal members.",
15
+ "- Do not invent unsupported behavior.",
16
+ "- If usage is ambiguous, prefer the simplest documented usage pattern.",
17
+ ];
18
+ const FUNCTION_RULES = [
19
+ "- Call this function according to the signature above.",
20
+ "- Do not invent unsupported parameters, return values, side effects, or lifecycle behavior.",
21
+ "- Do not use private, underscored, or internal implementation details.",
22
+ "- If usage is ambiguous, prefer the simplest documented usage pattern.",
23
+ ];
24
+ // ── shared low-level helpers ────────────────────────────────────────────────────
25
+ function getName(val) {
26
+ const raw = val.name;
27
+ return typeof raw === "string" ? raw : "";
28
+ }
29
+ function getProto(val) {
30
+ return val.prototype;
31
+ }
32
+ function getCtor(val) {
33
+ return val.constructor;
34
+ }
35
+ export const FAILED = Symbol("FAILED");
36
+ export function safeCall(fn) {
37
+ try {
38
+ return fn();
39
+ }
40
+ catch {
41
+ return FAILED;
42
+ }
43
+ }
44
+ export function protoOf(ctor) {
45
+ const p = getProto(ctor);
46
+ return typeof p === "object" && p !== null ? p : null;
47
+ }
48
+ const EXCLUDED = new Set(["constructor", "agentHelp", "agentNotes"]);
49
+ function isExcluded(name) {
50
+ return EXCLUDED.has(name) || name.startsWith("_");
51
+ }
52
+ function isPublicProtoMember(n) {
53
+ return !isExcluded(n);
54
+ }
55
+ export function isClassConstructor(fn) {
56
+ const src = Function.prototype.toString.call(fn);
57
+ if (src.startsWith("class ") || src.startsWith("class{"))
58
+ return true;
59
+ const proto = getProto(fn);
60
+ if (proto == null || typeof proto !== "object")
61
+ return false;
62
+ return Object.getOwnPropertyNames(proto).some(isPublicProtoMember);
63
+ }
64
+ function buildPrototypeChain(ctor) {
65
+ const chain = [];
66
+ let p = getProto(ctor);
67
+ while (p != null) {
68
+ if (typeof p === "object") {
69
+ chain.unshift(p);
70
+ }
71
+ p = Object.getPrototypeOf(p);
72
+ }
73
+ return chain;
74
+ }
75
+ // ── parameter name recovery ───────────────────────────────────────────────────
76
+ function fallbackArgs(arity) {
77
+ const args = [];
78
+ for (let i = 0; i < arity; i++)
79
+ args.push(`arg${i}`);
80
+ return args;
81
+ }
82
+ const QUOTES = new Set(["'", '"', "`"]);
83
+ function skipTemplateExpr(src, start) {
84
+ let i = start;
85
+ let depth = 1;
86
+ while (i < src.length && depth > 0) {
87
+ const ch = src[i];
88
+ if (ch === "`") {
89
+ i = skipStringLike(src, i);
90
+ continue;
91
+ }
92
+ if (ch === "{")
93
+ depth++;
94
+ else if (ch === "}")
95
+ depth--;
96
+ i++;
97
+ }
98
+ return i;
99
+ }
100
+ function skipStringLike(src, start) {
101
+ const quote = src[start];
102
+ let i = start + 1;
103
+ while (i < src.length) {
104
+ const ch = src[i];
105
+ if (ch === "\\") {
106
+ i += 2;
107
+ continue;
108
+ }
109
+ if (ch === quote)
110
+ return i + 1;
111
+ if (quote === "`" && ch === "$" && src[i + 1] === "{") {
112
+ i = skipTemplateExpr(src, i + 2);
113
+ continue;
114
+ }
115
+ i++;
116
+ } /* node:coverage disable */
117
+ // Unterminated string is impossible for valid fn source from Function.prototype.toString.
118
+ return src.length;
119
+ /* node:coverage enable */
120
+ }
121
+ const BRACKET_DEPTH = { "(": 1, ")": -1, "{": 1, "}": -1, "[": 1, "]": -1 };
122
+ function splitCommas(str) {
123
+ const result = [];
124
+ let depth = 0;
125
+ let current = "";
126
+ let i = 0;
127
+ while (i < str.length) {
128
+ const ch = str[i];
129
+ if (QUOTES.has(ch)) {
130
+ const end = skipStringLike(str, i);
131
+ current += str.slice(i, end);
132
+ i = end;
133
+ continue;
134
+ }
135
+ depth += BRACKET_DEPTH[ch] ?? 0;
136
+ if (ch === "," && depth === 0) {
137
+ result.push(current);
138
+ current = "";
139
+ }
140
+ else {
141
+ current += ch;
142
+ }
143
+ i++;
144
+ }
145
+ if (current)
146
+ result.push(current);
147
+ return result;
148
+ }
149
+ function extractParamName(seg) {
150
+ seg = seg.trim();
151
+ if (seg.startsWith("{") || seg.startsWith("["))
152
+ return null;
153
+ if (seg.startsWith("..."))
154
+ seg = seg.slice(3).trim();
155
+ const match = /^([a-zA-Z_$][a-zA-Z0-9_$]*)/.exec(seg);
156
+ return match ? match[1] : null;
157
+ }
158
+ const PAREN_DEPTH = { "(": 1, ")": -1 };
159
+ function findMatchingCloseParen(src, openIdx) {
160
+ let depth = 0;
161
+ let i = openIdx;
162
+ while (i < src.length) {
163
+ const ch = src[i];
164
+ if (ch === "'" || ch === '"' || ch === "`") {
165
+ i = skipStringLike(src, i);
166
+ continue;
167
+ }
168
+ depth += PAREN_DEPTH[ch] ?? 0;
169
+ if (depth === 0)
170
+ return i;
171
+ i++;
172
+ } /* node:coverage disable */
173
+ // Unbalanced parens are impossible for valid fn source from Function.prototype.toString.
174
+ return -1;
175
+ /* node:coverage enable */
176
+ }
177
+ function extractParamString(src) {
178
+ const openIdx = src.indexOf("(");
179
+ if (openIdx === -1)
180
+ return null;
181
+ const closeIdx = findMatchingCloseParen(src, openIdx);
182
+ if (closeIdx === -1)
183
+ return null;
184
+ return src.slice(openIdx + 1, closeIdx).trim();
185
+ }
186
+ function buildParamNames(paramStr, arity) {
187
+ const segments = splitCommas(paramStr);
188
+ const names = [];
189
+ for (let i = 0; i < segments.length && names.length < arity; i++) {
190
+ const name = extractParamName(segments[i]);
191
+ names.push(name ?? `arg${names.length}`);
192
+ }
193
+ while (names.length < arity)
194
+ names.push(`arg${names.length}`);
195
+ return names.slice(0, arity);
196
+ }
197
+ function parseParamNames(fn) {
198
+ const arity = fn.length;
199
+ if (arity === 0)
200
+ return [];
201
+ try {
202
+ const src = Function.prototype.toString.call(fn);
203
+ if (src.includes("[native code]"))
204
+ return fallbackArgs(arity);
205
+ const paramStr = extractParamString(src);
206
+ if (paramStr === null)
207
+ return fallbackArgs(arity);
208
+ if (!paramStr)
209
+ return [];
210
+ return buildParamNames(paramStr, arity);
211
+ }
212
+ catch {
213
+ return fallbackArgs(arity);
214
+ }
215
+ }
216
+ // ── method meta (arity + param names) ──────────────────────────────────────────
217
+ function methodMeta(ctor, name) {
218
+ let p = getProto(ctor);
219
+ while (p != null && p !== Object.prototype) {
220
+ if (typeof p === "object") {
221
+ const desc = Object.getOwnPropertyDescriptor(p, name);
222
+ if (desc && typeof desc.value === "function") {
223
+ const fn = desc.value;
224
+ return { arity: fn.length, paramNames: parseParamNames(fn) };
225
+ }
226
+ }
227
+ p = Object.getPrototypeOf(p);
228
+ } /* node:coverage disable */
229
+ // Name is always found on the prototype chain it was collected from.
230
+ return { arity: 0, paramNames: [] };
231
+ /* node:coverage enable */
232
+ }
233
+ const KIND_ORDER = {
234
+ method: 0,
235
+ accessor: 1,
236
+ property: 2,
237
+ };
238
+ function sortMembers(members) {
239
+ return members.sort((a, b) => {
240
+ const k = KIND_ORDER[a.kind] - KIND_ORDER[b.kind];
241
+ return k === 0 ? a.name.localeCompare(b.name) : k;
242
+ });
243
+ }
244
+ function argList(arity, paramNames) {
245
+ if (paramNames && paramNames.length > 0) {
246
+ return paramNames.join(", ");
247
+ }
248
+ const args = [];
249
+ for (let i = 0; i < arity; i++)
250
+ args.push(`arg${i}`);
251
+ return args.join(", ");
252
+ }
253
+ function formatTypedSig(typeSig) {
254
+ const params = typeSig.params.length > 0
255
+ ? typeSig.params.map((p) => `${p.name}: ${p.type}`).join(", ")
256
+ : "";
257
+ const ret = typeSig.returnType ? `: ${typeSig.returnType}` : "";
258
+ return `(${params})${ret}`;
259
+ }
260
+ /** Build the call-signature suffix (`(params)` or `(params): ret`) for a method. */
261
+ function methodSignature(m) {
262
+ return m.typeSig ? formatTypedSig(m.typeSig) : `(${argList(m.arity, m.paramNames)})`;
263
+ }
264
+ function toHelpMember(m) {
265
+ return {
266
+ name: m.name,
267
+ kind: m.kind,
268
+ signature: m.kind === "method" ? methodSignature(m) : null,
269
+ };
270
+ }
271
+ function collectMemberFromDesc(name, desc, objProtoNames, ctor, seen, members, typeSigs) {
272
+ if (seen.has(name) || isExcluded(name))
273
+ return;
274
+ if (objProtoNames.has(name) && typeof desc.value !== "function")
275
+ return;
276
+ if (typeof desc.value === "function") {
277
+ seen.add(name);
278
+ const meta = methodMeta(ctor, name);
279
+ members.push({ name, kind: "method", arity: meta.arity, paramNames: meta.paramNames, typeSig: typeSigs?.get(name) });
280
+ }
281
+ else if (desc.get || desc.set) {
282
+ seen.add(name);
283
+ members.push({ name, kind: "accessor", arity: 0, paramNames: [] });
284
+ }
285
+ }
286
+ function collectPrototypeMembers(ctor, typeSigs) {
287
+ const seen = new Set();
288
+ const members = [];
289
+ const chain = buildPrototypeChain(ctor);
290
+ const objProtoNames = new Set(Object.getOwnPropertyNames(Object.prototype));
291
+ for (let i = chain.length - 1; i >= 0; i--) {
292
+ const proto = chain[i];
293
+ if (proto === Object.prototype)
294
+ continue;
295
+ const descs = Object.getOwnPropertyDescriptors(proto);
296
+ for (const [name, desc] of Object.entries(descs)) {
297
+ collectMemberFromDesc(name, desc, objProtoNames, ctor, seen, members, typeSigs);
298
+ }
299
+ }
300
+ return sortMembers(members);
301
+ }
302
+ function ownMemberKind(desc) {
303
+ if (typeof desc.value === "function")
304
+ return null;
305
+ if (desc.enumerable === false)
306
+ return null;
307
+ return (desc.get || desc.set) ? "accessor" : "property";
308
+ }
309
+ function collectOwnMembers(target, seen, members) {
310
+ const descs = Object.getOwnPropertyDescriptors(target);
311
+ for (const [name, desc] of Object.entries(descs)) {
312
+ if (seen.has(name) || isExcluded(name))
313
+ continue;
314
+ const kind = ownMemberKind(desc);
315
+ if (kind) {
316
+ members.push({ name, kind, arity: 0, paramNames: [] });
317
+ seen.add(name);
318
+ }
319
+ }
320
+ }
321
+ function collectInstanceMembers(target, ctor, typeSigs) {
322
+ const seen = new Set();
323
+ const members = [];
324
+ if (ctor != null) {
325
+ for (const m of collectPrototypeMembers(ctor, typeSigs)) {
326
+ members.push(m);
327
+ seen.add(m.name);
328
+ }
329
+ }
330
+ collectOwnMembers(target, seen, members);
331
+ return sortMembers(members);
332
+ }
333
+ // ── notes collection ──────────────────────────────────────────────────────────
334
+ function collectNoteFromProto(proto, isLeaf, parentNames, instance) {
335
+ const desc = Object.getOwnPropertyDescriptor(proto, "agentNotes");
336
+ if (!desc || typeof desc.value !== "function")
337
+ return null;
338
+ const ctorOfProto = getCtor(proto);
339
+ const sectionName = ctorOfProto ? String(getName(ctorOfProto) || "Object") : "Object";
340
+ const receiver = instance != null && proto.isPrototypeOf(instance) // NOSONAR: dynamic type guard
341
+ ? instance
342
+ : Object.create(proto);
343
+ const result = safeCall(() => desc.value.call(receiver));
344
+ if (result === FAILED)
345
+ return null;
346
+ const body = String(result).trim();
347
+ if (!body)
348
+ return null;
349
+ return {
350
+ className: sectionName,
351
+ body,
352
+ inherited: isLeaf && parentNames.length > 0 ? [...parentNames] : [],
353
+ };
354
+ }
355
+ function collectNotes(ctor, instance) {
356
+ const notes = [];
357
+ const parentNames = [];
358
+ const chain = buildPrototypeChain(ctor);
359
+ for (const proto of chain) {
360
+ if (proto === Object.prototype)
361
+ continue;
362
+ const isLeaf = proto === chain.at(-1);
363
+ const note = collectNoteFromProto(proto, !!isLeaf, parentNames, instance);
364
+ if (!note)
365
+ continue;
366
+ notes.push(note);
367
+ if (!isLeaf) {
368
+ parentNames.push(note.className);
369
+ }
370
+ }
371
+ return notes;
372
+ }
373
+ // ── function signature + name ───────────────────────────────────────────────────
374
+ function resolveFunctionName(fn) {
375
+ let name = getName(fn) || "function";
376
+ if (name.startsWith("bound "))
377
+ name = name.slice(6);
378
+ return name || "function";
379
+ }
380
+ function functionSignature(fn, name, typeSigs) {
381
+ const typeSig = typeSigs?.get(name);
382
+ const suffix = typeSig ? formatTypedSig(typeSig) : `(${argList(fn.length, parseParamNames(fn))})`;
383
+ return `${name}${suffix}`;
384
+ }
385
+ function functionNotes(fn, name) {
386
+ if (!hasAgentNoter(fn))
387
+ return [];
388
+ const result = safeCall(() => fn.agentNotes());
389
+ if (result === FAILED)
390
+ return [];
391
+ const body = String(result).trim();
392
+ return body ? [{ className: name, inherited: [], body }] : [];
393
+ }
394
+ // ── doc builders (extraction → HelpDoc) ─────────────────────────────────────────
395
+ export function buildClassDoc(ctor, instance, typeSigs) {
396
+ return {
397
+ title: getName(ctor) || "AnonymousClass",
398
+ signature: null,
399
+ members: collectPrototypeMembers(ctor, typeSigs).map(toHelpMember),
400
+ usageRules: CLASS_RULES,
401
+ notes: collectNotes(ctor, instance),
402
+ };
403
+ }
404
+ export function buildObjectDoc(target, typeSigs) {
405
+ const ctorRaw = getCtor(target);
406
+ const ctor = typeof ctorRaw === "function" ? ctorRaw : null;
407
+ const title = ctor && ctor !== Object && getName(ctor) ? getName(ctor) : "Object";
408
+ return {
409
+ title,
410
+ signature: null,
411
+ members: collectInstanceMembers(target, ctor, typeSigs).map(toHelpMember),
412
+ usageRules: CLASS_RULES,
413
+ notes: ctor ? collectNotes(ctor, target) : [],
414
+ };
415
+ }
416
+ export function buildFunctionDoc(fn, typeSigs) {
417
+ const name = resolveFunctionName(fn);
418
+ return {
419
+ title: name,
420
+ signature: functionSignature(fn, name, typeSigs),
421
+ members: null,
422
+ usageRules: FUNCTION_RULES,
423
+ notes: functionNotes(fn, name),
424
+ };
425
+ }
426
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Specifier parsing, type-declaration loading, and on-demand package
3
+ * acquisition for the CLI.
4
+ *
5
+ * Everything here is side-effect-light and free of `process.exit`: functions
6
+ * that hit an unrecoverable condition throw, so the CLI entry point can convert
7
+ * the error to a message and the logic stays unit-testable.
8
+ */
9
+ import type { TypeSignatureMap } from "./model.js";
10
+ import type { ExportDescriptor } from "./source-types.js";
11
+ export declare const CACHE_DIR: string;
12
+ export declare function parseSpecifier(specifier: string): {
13
+ modulePath: string;
14
+ exportName: string | null;
15
+ };
16
+ export declare function isBarePackageName(modulePath: string): boolean;
17
+ export declare function splitPackageSpec(spec: string): {
18
+ name: string;
19
+ install: string;
20
+ };
21
+ export declare function walkExportPath(target: unknown, exportPath: string): unknown;
22
+ export declare function loadTypeSigs(absolutePath: string, exportName: string | null): TypeSignatureMap | undefined;
23
+ export declare function formatExportList(packageName: string, exports: ExportDescriptor[], typeSigs?: TypeSignatureMap): string;
24
+ export declare function isModuleNotFound(err: unknown): boolean;
25
+ export declare function isInstalledIn(name: string, dir: string): boolean;
26
+ export declare function ensureCacheInstall(name: string, install: string, dir?: string): string;
27
+ export declare function importFromDir(name: string, dir: string): Promise<Record<string, unknown>>;
28
+ export interface LoadedPackage {
29
+ mod: Record<string, unknown>;
30
+ typesDir: string;
31
+ }
32
+ export declare function loadPackage(spec: string, cacheDir?: string): Promise<LoadedPackage>;
33
+ //# sourceMappingURL=packages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../src/packages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,SAAS,QAC8D,CAAC;AAIrF,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAQnG;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAKhF;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAc3E;AAoBD,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,CAc1G;AAID,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAiBtH;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAchE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,MAAM,CAqBjG;AAUD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkB/F;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAiBpG"}