@mnemonica/tactica 0.1.0 → 0.1.2

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,509 @@
1
+ 'use strict';
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TopologicaAnalyzer = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const ts = __importStar(require("typescript"));
40
+ const graph_1 = require("./graph");
41
+ /**
42
+ * Analyzer for Topologica directory-based type definitions
43
+ * Scans directory structures to create type hierarchies like:
44
+ * ai-types/Sentience/Consciousness/Empathy/Gratitude/
45
+ *
46
+ * Now with AST-based property extraction from TypeScript/JavaScript files
47
+ */
48
+ class TopologicaAnalyzer {
49
+ constructor() {
50
+ this.errors = [];
51
+ this.graph = new graph_1.TypeGraphImpl();
52
+ }
53
+ /**
54
+ * Analyze a directory structure for topologica type definitions
55
+ */
56
+ analyzeDirectory(directoryPath) {
57
+ this.errors = [];
58
+ if (!fs.existsSync(directoryPath)) {
59
+ this.errors.push(`Directory does not exist: ${directoryPath}`);
60
+ return { types: this.graph.allTypes, errors: this.errors };
61
+ }
62
+ if (!fs.statSync(directoryPath).isDirectory()) {
63
+ this.errors.push(`Path is not a directory: ${directoryPath}`);
64
+ return { types: this.graph.allTypes, errors: this.errors };
65
+ }
66
+ this.scanDirectory(directoryPath, undefined, directoryPath);
67
+ return {
68
+ types: this.graph.allTypes,
69
+ errors: this.errors,
70
+ };
71
+ }
72
+ /**
73
+ * Recursively scan directory structure to build type hierarchy
74
+ */
75
+ scanDirectory(currentPath, parentNode, rootPath) {
76
+ try {
77
+ const entries = fs.readdirSync(currentPath, { withFileTypes: true });
78
+ for (const entry of entries) {
79
+ if (entry.isDirectory()) {
80
+ // Create type node for this directory
81
+ const typeName = entry.name;
82
+ const fullPath = parentNode ? `${parentNode.fullPath}.${typeName}` : typeName;
83
+ const dirPath = path.join(currentPath, entry.name);
84
+ // Extract properties and constructor params from the handler file if it exists
85
+ const { properties, constructorParams, handlerLocation } = this.extractPropertiesFromDir(dirPath);
86
+ // Create the type node with proper source location for Go to Definition
87
+ const typeNode = {
88
+ name: typeName,
89
+ fullPath: fullPath,
90
+ properties: properties,
91
+ constructorParams: constructorParams,
92
+ parent: parentNode,
93
+ children: new Map(),
94
+ sourceFile: handlerLocation?.filePath || dirPath,
95
+ line: handlerLocation?.line || 0,
96
+ column: handlerLocation?.column || 0,
97
+ constructorName: typeName
98
+ };
99
+ // Add to graph
100
+ if (parentNode) {
101
+ this.graph.addChild(parentNode, typeNode);
102
+ }
103
+ else {
104
+ // Add as root type
105
+ this.graph.addRoot(typeNode);
106
+ }
107
+ // Scan children of this directory
108
+ this.scanDirectory(dirPath, typeNode, rootPath);
109
+ }
110
+ }
111
+ }
112
+ catch (error) {
113
+ this.errors.push(`Error scanning directory ${currentPath}: ${error.message}`);
114
+ }
115
+ }
116
+ /**
117
+ * Extract properties from a directory's index file
118
+ * Supports both .ts and .js files
119
+ */
120
+ extractPropertiesFromDir(dirPath) {
121
+ const properties = new Map();
122
+ let constructorParams;
123
+ // Check for TypeScript file first, then JavaScript
124
+ const tsFile = path.join(dirPath, 'index.ts');
125
+ const jsFile = path.join(dirPath, 'index.js');
126
+ let targetFile;
127
+ if (fs.existsSync(tsFile)) {
128
+ targetFile = tsFile;
129
+ }
130
+ else if (fs.existsSync(jsFile)) {
131
+ targetFile = jsFile;
132
+ }
133
+ if (!targetFile) {
134
+ return { properties };
135
+ }
136
+ // Default location points to the index file (will be updated if handler found)
137
+ let handlerLocation;
138
+ try {
139
+ const content = fs.readFileSync(targetFile, 'utf-8');
140
+ const sourceFile = ts.createSourceFile(targetFile, content, ts.ScriptTarget.Latest, true);
141
+ // Collect type aliases from the file (e.g., SentienceData = { ... })
142
+ const typeAliases = this.collectTypeAliases(sourceFile);
143
+ // Find handler function and extract property assignments and constructor params
144
+ const result = this.extractPropertiesFromSourceFile(sourceFile, properties, typeAliases);
145
+ constructorParams = result.constructorParams;
146
+ // Use the handler function location if found
147
+ if (result.handlerLocation) {
148
+ handlerLocation = result.handlerLocation;
149
+ }
150
+ }
151
+ catch (error) {
152
+ this.errors.push(`Error parsing ${targetFile}: ${error.message}`);
153
+ }
154
+ return { properties, constructorParams, handlerLocation };
155
+ }
156
+ /**
157
+ * Collect type aliases from source file
158
+ * e.g., export type SentienceData = { awareness?: string; }
159
+ */
160
+ collectTypeAliases(sourceFile) {
161
+ const typeAliases = new Map();
162
+ const visit = (node) => {
163
+ // Look for type alias declarations: export type Name = Type;
164
+ if (ts.isTypeAliasDeclaration(node)) {
165
+ const name = node.name.text;
166
+ typeAliases.set(name, node.type);
167
+ }
168
+ ts.forEachChild(node, visit);
169
+ };
170
+ visit(sourceFile);
171
+ return typeAliases;
172
+ }
173
+ /**
174
+ * Extract property assignments from a source file
175
+ * Returns constructor parameters and handler location if found
176
+ */
177
+ extractPropertiesFromSourceFile(sourceFile, properties, typeAliases) {
178
+ let constructorParams;
179
+ let handlerLocation;
180
+ const visit = (node) => {
181
+ // Look for exported function declarations (topologica convention: one exported function per file)
182
+ if (ts.isFunctionDeclaration(node) && node.name) {
183
+ // Check if it's exported
184
+ const isExported = node.modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword);
185
+ if (isExported) {
186
+ this.extractThisProperties(node, properties);
187
+ // Extract constructor params and location from the exported function
188
+ if (!constructorParams) {
189
+ constructorParams = this.extractConstructorParams(node, typeAliases);
190
+ // Capture the function location
191
+ const { line, character } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart(sourceFile));
192
+ handlerLocation = {
193
+ filePath: sourceFile.fileName,
194
+ line: line + 1, // 1-based
195
+ column: character + 1 // 1-based
196
+ };
197
+ }
198
+ }
199
+ }
200
+ // Also check function expressions/arrow functions assigned to exports
201
+ else if (ts.isFunctionExpression(node) || ts.isArrowFunction(node)) {
202
+ this.extractThisProperties(node, properties);
203
+ // Extract constructor params from non-exported functions too
204
+ if (!constructorParams) {
205
+ constructorParams = this.extractConstructorParams(node, typeAliases);
206
+ // Capture the function location
207
+ const { line, character } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart(sourceFile));
208
+ handlerLocation = {
209
+ filePath: sourceFile.fileName,
210
+ line: line + 1, // 1-based
211
+ column: character + 1 // 1-based
212
+ };
213
+ }
214
+ }
215
+ ts.forEachChild(node, visit);
216
+ };
217
+ visit(sourceFile);
218
+ return { constructorParams, handlerLocation };
219
+ }
220
+ /**
221
+ * Extract `this.property = value` assignments from a function body
222
+ */
223
+ extractThisProperties(func, properties) {
224
+ const body = func.body;
225
+ if (!body)
226
+ return;
227
+ const visitStatements = (node) => {
228
+ // Handle expression statements
229
+ if (ts.isExpressionStatement(node)) {
230
+ const expr = node.expression;
231
+ // Check for this.prop = value
232
+ if (ts.isBinaryExpression(expr) &&
233
+ expr.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
234
+ const left = expr.left;
235
+ const right = expr.right;
236
+ // Check if left side is this.property
237
+ if (ts.isPropertyAccessExpression(left) &&
238
+ left.expression.kind === ts.SyntaxKind.ThisKeyword) {
239
+ const propName = left.name.text;
240
+ const propType = this.inferType(right);
241
+ properties.set(propName, {
242
+ name: propName,
243
+ type: propType,
244
+ optional: false,
245
+ readonly: false
246
+ });
247
+ }
248
+ }
249
+ // Check for Object.assign(this, {...})
250
+ if (ts.isCallExpression(expr)) {
251
+ const callExpr = expr;
252
+ if (this.isObjectAssignCall(callExpr)) {
253
+ this.extractFromObjectAssign(callExpr, properties);
254
+ }
255
+ }
256
+ }
257
+ ts.forEachChild(node, visitStatements);
258
+ };
259
+ visitStatements(body);
260
+ }
261
+ /**
262
+ * Check if a call expression is Object.assign(this, ...)
263
+ */
264
+ isObjectAssignCall(callExpr) {
265
+ const expr = callExpr.expression;
266
+ if (!ts.isPropertyAccessExpression(expr))
267
+ return false;
268
+ const objName = ts.isIdentifier(expr.expression) ? expr.expression.text : null;
269
+ const methodName = expr.name.text;
270
+ if (objName === 'Object' && methodName === 'assign') {
271
+ const firstArg = callExpr.arguments[0];
272
+ if (firstArg && firstArg.kind === ts.SyntaxKind.ThisKeyword) {
273
+ return true;
274
+ }
275
+ }
276
+ return false;
277
+ }
278
+ /**
279
+ * Extract properties from Object.assign(this, data) pattern
280
+ */
281
+ extractFromObjectAssign(callExpr, properties) {
282
+ // Look for the data argument (second argument)
283
+ const dataArg = callExpr.arguments[1];
284
+ if (!dataArg)
285
+ return;
286
+ // If it's an object literal, extract properties
287
+ if (ts.isObjectLiteralExpression(dataArg)) {
288
+ for (const prop of dataArg.properties) {
289
+ if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
290
+ const propName = prop.name.text;
291
+ const propType = this.inferType(prop.initializer);
292
+ properties.set(propName, {
293
+ name: propName,
294
+ type: propType,
295
+ optional: false,
296
+ readonly: false
297
+ });
298
+ }
299
+ }
300
+ }
301
+ }
302
+ /**
303
+ * Extract constructor parameters from a function
304
+ * Similar to main analyzer - skips `this` parameter and expands data types
305
+ */
306
+ extractConstructorParams(func, typeAliases) {
307
+ if (!func.parameters || func.parameters.length === 0) {
308
+ return undefined;
309
+ }
310
+ const params = [];
311
+ // Skip `this` parameter (first param) and extract data parameters
312
+ for (let i = 0; i < func.parameters.length; i++) {
313
+ const param = func.parameters[i];
314
+ // Skip `this` parameter (first param)
315
+ if (i === 0 && param.name.kind === ts.SyntaxKind.Identifier &&
316
+ param.name.text === 'this') {
317
+ continue;
318
+ }
319
+ if (!param.type)
320
+ continue;
321
+ const paramName = ts.isIdentifier(param.name) ? param.name.text : 'arg';
322
+ const optional = param.questionToken !== undefined || param.initializer !== undefined;
323
+ // Expand type to object literal if possible
324
+ const expandedType = this.expandTypeToObject(param.type, typeAliases);
325
+ const paramType = expandedType || this.typeNodeToSimpleString(param.type);
326
+ params.push({
327
+ name: paramName,
328
+ type: paramType,
329
+ optional: optional
330
+ });
331
+ }
332
+ return params.length > 0 ? params : undefined;
333
+ }
334
+ /**
335
+ * Expand a type node to its object literal representation
336
+ * Similar to main analyzer's resolveTypeAndExtract
337
+ */
338
+ expandTypeToObject(typeNode, typeAliases) {
339
+ // Direct inline type literal: { prop: type }
340
+ if (ts.isTypeLiteralNode(typeNode)) {
341
+ const props = [];
342
+ for (const member of typeNode.members) {
343
+ if (ts.isPropertySignature(member) && ts.isIdentifier(member.name)) {
344
+ const propName = member.name.text;
345
+ const opt = member.questionToken ? '?' : '';
346
+ const type = this.typeNodeToSimpleString(member.type);
347
+ props.push(`${propName}${opt}: ${type}`);
348
+ }
349
+ }
350
+ return `{ ${props.join('; ')} }`;
351
+ }
352
+ // Type reference: SentienceData, etc. - try to expand from type aliases
353
+ if (ts.isTypeReferenceNode(typeNode) && ts.isIdentifier(typeNode.typeName)) {
354
+ const typeName = typeNode.typeName.text;
355
+ // If we have type aliases, try to expand the referenced type
356
+ if (typeAliases) {
357
+ const aliasedType = typeAliases.get(typeName);
358
+ if (aliasedType) {
359
+ const expanded = this.expandTypeToObject(aliasedType, typeAliases);
360
+ if (expanded)
361
+ return expanded;
362
+ }
363
+ }
364
+ // If not an object type alias, return the type name
365
+ return typeName;
366
+ }
367
+ return undefined;
368
+ }
369
+ /**
370
+ * Convert a TypeScript type node to a simple string representation
371
+ */
372
+ typeNodeToSimpleString(typeNode) {
373
+ if (!typeNode)
374
+ return 'any';
375
+ switch (typeNode.kind) {
376
+ case ts.SyntaxKind.StringKeyword:
377
+ return 'string';
378
+ case ts.SyntaxKind.NumberKeyword:
379
+ return 'number';
380
+ case ts.SyntaxKind.BooleanKeyword:
381
+ return 'boolean';
382
+ case ts.SyntaxKind.AnyKeyword:
383
+ return 'any';
384
+ case ts.SyntaxKind.ArrayType:
385
+ return 'Array<any>';
386
+ case ts.SyntaxKind.TypeReference: {
387
+ const typeRef = typeNode;
388
+ if (ts.isIdentifier(typeRef.typeName)) {
389
+ return typeRef.typeName.text;
390
+ }
391
+ return 'any';
392
+ }
393
+ default:
394
+ return 'any';
395
+ }
396
+ }
397
+ /**
398
+ * Infer TypeScript type from an expression
399
+ */
400
+ inferType(node) {
401
+ switch (node.kind) {
402
+ case ts.SyntaxKind.StringLiteral:
403
+ return 'string';
404
+ case ts.SyntaxKind.NumericLiteral:
405
+ return 'number';
406
+ case ts.SyntaxKind.TrueKeyword:
407
+ case ts.SyntaxKind.FalseKeyword:
408
+ return 'boolean';
409
+ case ts.SyntaxKind.NullKeyword:
410
+ return 'null';
411
+ case ts.SyntaxKind.UndefinedKeyword:
412
+ return 'undefined';
413
+ case ts.SyntaxKind.ArrayLiteralExpression:
414
+ return 'Array<any>';
415
+ case ts.SyntaxKind.ObjectLiteralExpression:
416
+ return 'object';
417
+ case ts.SyntaxKind.NewExpression:
418
+ return this.inferNewExpressionType(node);
419
+ case ts.SyntaxKind.ConditionalExpression:
420
+ return this.inferType(node.whenTrue);
421
+ case ts.SyntaxKind.BinaryExpression: {
422
+ const binExpr = node;
423
+ // Check for logical OR pattern: value || default
424
+ if (binExpr.operatorToken.kind === ts.SyntaxKind.BarBarToken) {
425
+ // Return the type of the right side (the default value)
426
+ return this.inferType(binExpr.right);
427
+ }
428
+ return 'any';
429
+ }
430
+ case ts.SyntaxKind.PropertyAccessExpression: {
431
+ const propAccess = node;
432
+ // Handle data?.property patterns
433
+ return this.inferType(propAccess);
434
+ }
435
+ case ts.SyntaxKind.CallExpression: {
436
+ const callExpr = node;
437
+ return this.inferCallExpressionType(callExpr);
438
+ }
439
+ default:
440
+ return 'any';
441
+ }
442
+ }
443
+ /**
444
+ * Infer type from new expressions like new Date(), new Array(), etc.
445
+ */
446
+ inferNewExpressionType(node) {
447
+ const expr = node.expression;
448
+ if (ts.isIdentifier(expr)) {
449
+ switch (expr.text) {
450
+ case 'Date':
451
+ return 'number'; // Date.now() returns number
452
+ case 'Array':
453
+ return 'Array<any>';
454
+ case 'Map':
455
+ return 'Map<any, any>';
456
+ case 'Set':
457
+ return 'Set<any>';
458
+ case 'RegExp':
459
+ return 'RegExp';
460
+ default:
461
+ return expr.text;
462
+ }
463
+ }
464
+ return 'any';
465
+ }
466
+ /**
467
+ * Infer type from call expressions like Date.now(), parseInt(), etc.
468
+ */
469
+ inferCallExpressionType(node) {
470
+ const expr = node.expression;
471
+ // Handle Date.now()
472
+ if (ts.isPropertyAccessExpression(expr)) {
473
+ const obj = expr.expression;
474
+ const method = expr.name.text;
475
+ if (ts.isIdentifier(obj) && obj.text === 'Date' && method === 'now') {
476
+ return 'number';
477
+ }
478
+ }
479
+ // Handle parseInt, parseFloat, String(), Number(), Boolean()
480
+ if (ts.isIdentifier(expr)) {
481
+ switch (expr.text) {
482
+ case 'parseInt':
483
+ case 'parseFloat':
484
+ return 'number';
485
+ case 'String':
486
+ return 'string';
487
+ case 'Number':
488
+ return 'number';
489
+ case 'Boolean':
490
+ return 'boolean';
491
+ }
492
+ }
493
+ return 'any';
494
+ }
495
+ /**
496
+ * Get the type graph
497
+ */
498
+ getGraph() {
499
+ return this.graph;
500
+ }
501
+ /**
502
+ * Get collected errors
503
+ */
504
+ getErrors() {
505
+ return this.errors;
506
+ }
507
+ }
508
+ exports.TopologicaAnalyzer = TopologicaAnalyzer;
509
+ //# sourceMappingURL=topologica-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topologica-analyzer.js","sourceRoot":"","sources":["../src/topologica-analyzer.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -17,6 +17,16 @@ export interface PropertyInfo {
17
17
  name: string;
18
18
  type: string;
19
19
  optional: boolean;
20
+ /** True if this is a getter property (readonly) */
21
+ readonly?: boolean;
22
+ }
23
+ /** Constructor parameter info for TypeRegistry signatures */
24
+ export interface ConstructorParamInfo {
25
+ /** Parameter name (e.g., "usages", "data", "config") */
26
+ name: string;
27
+ /** The type string - can be a simple type or expanded object literal */
28
+ type: string;
29
+ optional: boolean;
20
30
  }
21
31
  export interface TypeNode {
22
32
  /** Type name (e.g., "SecondType") */
@@ -25,6 +35,8 @@ export interface TypeNode {
25
35
  fullPath: string;
26
36
  /** Properties defined in this type's constructor */
27
37
  properties: Map<string, PropertyInfo>;
38
+ /** Constructor parameters (for TypeRegistry constructor signature) */
39
+ constructorParams?: ConstructorParamInfo[];
28
40
  /** Parent type node */
29
41
  parent?: TypeNode;
30
42
  /** Child types */
@@ -70,3 +82,101 @@ export interface GeneratedTypes {
70
82
  /** Types that were generated */
71
83
  types: string[];
72
84
  }
85
+ /**
86
+ * Definition info for code navigation
87
+ */
88
+ export interface DefinitionInfo {
89
+ /** Type name (e.g., "AdminType") */
90
+ name: string;
91
+ /** Location in source: file.ts:Line:Col */
92
+ location: string;
93
+ /** How type was created: 'define' or 'decorate' */
94
+ kind: 'define' | 'decorate';
95
+ /** Parent type full path, null if root */
96
+ parent: string | null;
97
+ /** strictChain config option */
98
+ strictChain: boolean;
99
+ /** blockErrors config option */
100
+ blockErrors: boolean;
101
+ }
102
+ /**
103
+ * Usage info for code navigation
104
+ */
105
+ export interface UsageInfo {
106
+ /** Location in source: file.ts:Line:Col */
107
+ location: string;
108
+ /** Kind of usage: instantiation, typeAnnotation, propertyAccess, lookup, reference */
109
+ kind: 'instantiation' | 'typeAnnotation' | 'propertyAccess' | 'lookup' | 'reference';
110
+ /** Code snippet */
111
+ code: string;
112
+ }
113
+ /**
114
+ * JSON output for definitions.json
115
+ */
116
+ export interface DefinitionsJson {
117
+ version: string;
118
+ generatedAt: string;
119
+ definitions: Record<string, DefinitionInfo>;
120
+ }
121
+ /**
122
+ * JSON output for usages.json
123
+ */
124
+ export interface UsagesJson {
125
+ version: string;
126
+ generatedAt: string;
127
+ usages: Record<string, UsageInfo[]>;
128
+ }
129
+ /**
130
+ * EDS (Execution Data Storage) kind for tracking execution flow patterns
131
+ */
132
+ export type EDSKind = 'wrap' | 'link' | 'contextConsume' | 'errorEnrich' | 'hookAttach' | 'adapterUse';
133
+ /**
134
+ * EDS info for execution data flow tracking
135
+ */
136
+ export interface EDSInfo {
137
+ /** Location in source: file.ts:Line:Col */
138
+ location: string;
139
+ /** Kind of EDS usage */
140
+ kind: EDSKind;
141
+ /** Code snippet */
142
+ code: string;
143
+ /** Resolved target type if detectable */
144
+ targetType?: string;
145
+ }
146
+ /**
147
+ * JSON output for eds.json
148
+ */
149
+ export interface EDSJson {
150
+ version: string;
151
+ generatedAt: string;
152
+ eds: Record<string, EDSInfo[]>;
153
+ }
154
+ /**
155
+ * Flow kind for tracking native instance usage patterns
156
+ */
157
+ export type FlowKind = 'propertyRead' | 'propertyWrite' | 'methodCall' | 'destructureRead' | 'passAsArg' | 'return' | 'spread' | 'arrayElement' | 'conditionalAccess' | 'elementAccess' | 'reassignment' | 'instantiation';
158
+ /**
159
+ * Flow info for native instance usage tracking
160
+ */
161
+ export interface FlowInfo {
162
+ /** Location in source: file.ts:Line:Col */
163
+ location: string;
164
+ /** Kind of flow */
165
+ kind: FlowKind;
166
+ /** Code snippet */
167
+ code: string;
168
+ /** Property name if applicable */
169
+ propertyName?: string;
170
+ /** Resolved target type if known */
171
+ targetType?: string;
172
+ /** Context (function name, param position, etc.) */
173
+ context?: string;
174
+ }
175
+ /**
176
+ * JSON output for flow.json
177
+ */
178
+ export interface FlowJson {
179
+ version: string;
180
+ generatedAt: string;
181
+ flow: Record<string, FlowInfo[]>;
182
+ }