lua-cli 3.12.1 → 3.13.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 (235) hide show
  1. package/dist/api/logs.api.service.d.ts +6 -3
  2. package/dist/api/logs.api.service.d.ts.map +1 -1
  3. package/dist/api/logs.api.service.js +5 -4
  4. package/dist/api/logs.api.service.js.map +1 -1
  5. package/dist/cli/command-definitions.d.ts.map +1 -1
  6. package/dist/cli/command-definitions.js +24 -2
  7. package/dist/cli/command-definitions.js.map +1 -1
  8. package/dist/commands/channels.d.ts.map +1 -1
  9. package/dist/commands/channels.js +2 -11
  10. package/dist/commands/channels.js.map +1 -1
  11. package/dist/commands/chat-log-probe.d.ts +59 -0
  12. package/dist/commands/chat-log-probe.d.ts.map +1 -0
  13. package/dist/commands/chat-log-probe.js +91 -0
  14. package/dist/commands/chat-log-probe.js.map +1 -0
  15. package/dist/commands/chat.d.ts.map +1 -1
  16. package/dist/commands/chat.js +134 -28
  17. package/dist/commands/chat.js.map +1 -1
  18. package/dist/commands/compile.d.ts +7 -0
  19. package/dist/commands/compile.d.ts.map +1 -1
  20. package/dist/commands/compile.js +32 -2
  21. package/dist/commands/compile.js.map +1 -1
  22. package/dist/commands/completion.d.ts.map +1 -1
  23. package/dist/commands/completion.js +7 -8
  24. package/dist/commands/completion.js.map +1 -1
  25. package/dist/commands/deploy.d.ts.map +1 -1
  26. package/dist/commands/deploy.js +108 -23
  27. package/dist/commands/deploy.js.map +1 -1
  28. package/dist/commands/devices.d.ts.map +1 -1
  29. package/dist/commands/devices.js +3 -2
  30. package/dist/commands/devices.js.map +1 -1
  31. package/dist/commands/env.d.ts.map +1 -1
  32. package/dist/commands/env.js +43 -20
  33. package/dist/commands/env.js.map +1 -1
  34. package/dist/commands/features.d.ts.map +1 -1
  35. package/dist/commands/features.js +2 -12
  36. package/dist/commands/features.js.map +1 -1
  37. package/dist/commands/governance.d.ts.map +1 -1
  38. package/dist/commands/governance.js +4 -8
  39. package/dist/commands/governance.js.map +1 -1
  40. package/dist/commands/index.d.ts +1 -0
  41. package/dist/commands/index.d.ts.map +1 -1
  42. package/dist/commands/index.js +1 -0
  43. package/dist/commands/index.js.map +1 -1
  44. package/dist/commands/init.d.ts.map +1 -1
  45. package/dist/commands/init.js +12 -2
  46. package/dist/commands/init.js.map +1 -1
  47. package/dist/commands/integrations.d.ts.map +1 -1
  48. package/dist/commands/integrations.js +4 -2
  49. package/dist/commands/integrations.js.map +1 -1
  50. package/dist/commands/jobs.d.ts.map +1 -1
  51. package/dist/commands/jobs.js +61 -23
  52. package/dist/commands/jobs.js.map +1 -1
  53. package/dist/commands/log-tip.d.ts +79 -0
  54. package/dist/commands/log-tip.d.ts.map +1 -0
  55. package/dist/commands/log-tip.js +91 -0
  56. package/dist/commands/log-tip.js.map +1 -0
  57. package/dist/commands/logs.d.ts.map +1 -1
  58. package/dist/commands/logs.js +97 -136
  59. package/dist/commands/logs.js.map +1 -1
  60. package/dist/commands/marketplace.d.ts.map +1 -1
  61. package/dist/commands/marketplace.js +14 -25
  62. package/dist/commands/marketplace.js.map +1 -1
  63. package/dist/commands/mcp.d.ts.map +1 -1
  64. package/dist/commands/mcp.js +17 -19
  65. package/dist/commands/mcp.js.map +1 -1
  66. package/dist/commands/models.d.ts.map +1 -1
  67. package/dist/commands/models.js +2 -1
  68. package/dist/commands/models.js.map +1 -1
  69. package/dist/commands/persona.d.ts.map +1 -1
  70. package/dist/commands/persona.js +4 -30
  71. package/dist/commands/persona.js.map +1 -1
  72. package/dist/commands/postprocessors.d.ts.map +1 -1
  73. package/dist/commands/postprocessors.js +43 -17
  74. package/dist/commands/postprocessors.js.map +1 -1
  75. package/dist/commands/preprocessors.d.ts.map +1 -1
  76. package/dist/commands/preprocessors.js +43 -17
  77. package/dist/commands/preprocessors.js.map +1 -1
  78. package/dist/commands/production.d.ts.map +1 -1
  79. package/dist/commands/production.js +2 -12
  80. package/dist/commands/production.js.map +1 -1
  81. package/dist/commands/push-helpers.d.ts +42 -0
  82. package/dist/commands/push-helpers.d.ts.map +1 -0
  83. package/dist/commands/push-helpers.js +48 -0
  84. package/dist/commands/push-helpers.js.map +1 -0
  85. package/dist/commands/push.d.ts +2 -0
  86. package/dist/commands/push.d.ts.map +1 -1
  87. package/dist/commands/push.js +269 -54
  88. package/dist/commands/push.js.map +1 -1
  89. package/dist/commands/pushBackup.d.ts.map +1 -1
  90. package/dist/commands/pushBackup.js +7 -1
  91. package/dist/commands/pushBackup.js.map +1 -1
  92. package/dist/commands/resources.d.ts.map +1 -1
  93. package/dist/commands/resources.js +2 -12
  94. package/dist/commands/resources.js.map +1 -1
  95. package/dist/commands/skills.d.ts.map +1 -1
  96. package/dist/commands/skills.js +51 -36
  97. package/dist/commands/skills.js.map +1 -1
  98. package/dist/commands/status.d.ts +14 -0
  99. package/dist/commands/status.d.ts.map +1 -0
  100. package/dist/commands/status.js +734 -0
  101. package/dist/commands/status.js.map +1 -0
  102. package/dist/commands/sync.d.ts.map +1 -1
  103. package/dist/commands/sync.js +37 -2
  104. package/dist/commands/sync.js.map +1 -1
  105. package/dist/commands/telemetry.d.ts.map +1 -1
  106. package/dist/commands/telemetry.js +4 -0
  107. package/dist/commands/telemetry.js.map +1 -1
  108. package/dist/commands/test-output.helpers.d.ts +24 -0
  109. package/dist/commands/test-output.helpers.d.ts.map +1 -0
  110. package/dist/commands/test-output.helpers.js +62 -0
  111. package/dist/commands/test-output.helpers.js.map +1 -0
  112. package/dist/commands/test.d.ts.map +1 -1
  113. package/dist/commands/test.js +236 -76
  114. package/dist/commands/test.js.map +1 -1
  115. package/dist/commands/webhooks.d.ts.map +1 -1
  116. package/dist/commands/webhooks.js +34 -21
  117. package/dist/commands/webhooks.js.map +1 -1
  118. package/dist/compiler/agent-traverser.d.ts +50 -14
  119. package/dist/compiler/agent-traverser.d.ts.map +1 -1
  120. package/dist/compiler/agent-traverser.js +191 -86
  121. package/dist/compiler/agent-traverser.js.map +1 -1
  122. package/dist/compiler/compiler.d.ts +32 -0
  123. package/dist/compiler/compiler.d.ts.map +1 -1
  124. package/dist/compiler/compiler.js +143 -18
  125. package/dist/compiler/compiler.js.map +1 -1
  126. package/dist/compiler/index.d.ts +1 -1
  127. package/dist/compiler/index.d.ts.map +1 -1
  128. package/dist/compiler/index.js +1 -1
  129. package/dist/compiler/index.js.map +1 -1
  130. package/dist/compiler/plugins/base.d.ts +21 -0
  131. package/dist/compiler/plugins/base.d.ts.map +1 -1
  132. package/dist/compiler/plugins/base.js +10 -0
  133. package/dist/compiler/plugins/base.js.map +1 -1
  134. package/dist/compiler/plugins/skill.plugin.d.ts +35 -9
  135. package/dist/compiler/plugins/skill.plugin.d.ts.map +1 -1
  136. package/dist/compiler/plugins/skill.plugin.js +131 -84
  137. package/dist/compiler/plugins/skill.plugin.js.map +1 -1
  138. package/dist/compiler/types.d.ts +33 -0
  139. package/dist/compiler/types.d.ts.map +1 -1
  140. package/dist/compiler/types.js.map +1 -1
  141. package/dist/compiler/utils/ast-helpers.d.ts +1 -16
  142. package/dist/compiler/utils/ast-helpers.d.ts.map +1 -1
  143. package/dist/compiler/utils/ast-helpers.js +2 -31
  144. package/dist/compiler/utils/ast-helpers.js.map +1 -1
  145. package/dist/compiler/utils/common.d.ts +14 -0
  146. package/dist/compiler/utils/common.d.ts.map +1 -1
  147. package/dist/compiler/utils/common.js +38 -0
  148. package/dist/compiler/utils/common.js.map +1 -1
  149. package/dist/compiler/utils/path-resolver.d.ts +67 -10
  150. package/dist/compiler/utils/path-resolver.d.ts.map +1 -1
  151. package/dist/compiler/utils/path-resolver.js +120 -24
  152. package/dist/compiler/utils/path-resolver.js.map +1 -1
  153. package/dist/compiler/utils/reference-resolver.d.ts +196 -0
  154. package/dist/compiler/utils/reference-resolver.d.ts.map +1 -0
  155. package/dist/compiler/utils/reference-resolver.js +1030 -0
  156. package/dist/compiler/utils/reference-resolver.js.map +1 -0
  157. package/dist/compiler/utils/schema-converter.d.ts +25 -0
  158. package/dist/compiler/utils/schema-converter.d.ts.map +1 -1
  159. package/dist/compiler/utils/schema-converter.js +83 -4
  160. package/dist/compiler/utils/schema-converter.js.map +1 -1
  161. package/dist/compiler/utils/workspace.d.ts +35 -0
  162. package/dist/compiler/utils/workspace.d.ts.map +1 -0
  163. package/dist/compiler/utils/workspace.js +121 -0
  164. package/dist/compiler/utils/workspace.js.map +1 -0
  165. package/dist/compiler/utils/zod-runtime.mjs +5334 -0
  166. package/dist/index.js +1 -0
  167. package/dist/index.js.map +1 -1
  168. package/dist/interfaces/backup.d.ts +19 -1
  169. package/dist/interfaces/backup.d.ts.map +1 -1
  170. package/dist/interfaces/chat.d.ts +2 -2
  171. package/dist/interfaces/chat.d.ts.map +1 -1
  172. package/dist/interfaces/logs.d.ts +7 -4
  173. package/dist/interfaces/logs.d.ts.map +1 -1
  174. package/dist/primitives/base.handler.d.ts +10 -0
  175. package/dist/primitives/base.handler.d.ts.map +1 -1
  176. package/dist/primitives/base.handler.js +73 -44
  177. package/dist/primitives/base.handler.js.map +1 -1
  178. package/dist/primitives/job.handler.d.ts +5 -0
  179. package/dist/primitives/job.handler.d.ts.map +1 -1
  180. package/dist/primitives/job.handler.js +9 -0
  181. package/dist/primitives/job.handler.js.map +1 -1
  182. package/dist/primitives/webhook.handler.d.ts +2 -1
  183. package/dist/primitives/webhook.handler.d.ts.map +1 -1
  184. package/dist/primitives/webhook.handler.js +7 -1
  185. package/dist/primitives/webhook.handler.js.map +1 -1
  186. package/dist/services/auth.d.ts +8 -0
  187. package/dist/services/auth.d.ts.map +1 -1
  188. package/dist/services/auth.js +19 -0
  189. package/dist/services/auth.js.map +1 -1
  190. package/dist/services/sandbox.service.d.ts.map +1 -1
  191. package/dist/services/sandbox.service.js +6 -2
  192. package/dist/services/sandbox.service.js.map +1 -1
  193. package/dist/utils/aliases.d.ts +7 -0
  194. package/dist/utils/aliases.d.ts.map +1 -0
  195. package/dist/utils/aliases.js +457 -0
  196. package/dist/utils/aliases.js.map +1 -0
  197. package/dist/utils/backup-helpers.d.ts +24 -0
  198. package/dist/utils/backup-helpers.d.ts.map +1 -1
  199. package/dist/utils/backup-helpers.js +94 -8
  200. package/dist/utils/backup-helpers.js.map +1 -1
  201. package/dist/utils/chat-attachments.d.ts +15 -0
  202. package/dist/utils/chat-attachments.d.ts.map +1 -0
  203. package/dist/utils/chat-attachments.js +116 -0
  204. package/dist/utils/chat-attachments.js.map +1 -0
  205. package/dist/utils/cli.d.ts +24 -6
  206. package/dist/utils/cli.d.ts.map +1 -1
  207. package/dist/utils/cli.js +23 -9
  208. package/dist/utils/cli.js.map +1 -1
  209. package/dist/utils/hints.d.ts +81 -0
  210. package/dist/utils/hints.d.ts.map +1 -0
  211. package/dist/utils/hints.js +83 -0
  212. package/dist/utils/hints.js.map +1 -0
  213. package/dist/utils/suggest.d.ts +3 -0
  214. package/dist/utils/suggest.d.ts.map +1 -0
  215. package/dist/utils/suggest.js +34 -0
  216. package/dist/utils/suggest.js.map +1 -0
  217. package/dist/utils/write-info.d.ts +9 -0
  218. package/dist/utils/write-info.d.ts.map +1 -0
  219. package/dist/utils/write-info.js +11 -0
  220. package/dist/utils/write-info.js.map +1 -0
  221. package/docs/README.md +1 -1
  222. package/node_modules/@lua/shared-types/dist/index.d.mts +64 -2
  223. package/node_modules/@lua/shared-types/dist/index.d.ts +64 -2
  224. package/node_modules/@lua/shared-types/dist/index.js +27 -0
  225. package/node_modules/@lua/shared-types/dist/index.mjs +24 -0
  226. package/node_modules/@lua/shared-types/src/channel.type.ts +1 -0
  227. package/node_modules/@lua/shared-types/src/client-tools.types.ts +47 -0
  228. package/node_modules/@lua/shared-types/src/index.ts +2 -0
  229. package/node_modules/@lua/shared-types/src/vm-execution-log.types.ts +41 -0
  230. package/package.json +10 -6
  231. package/scripts/build-vendor.mjs +53 -0
  232. package/scripts/vendor-entry.mjs +11 -0
  233. package/template/examples/skills/tools/CustomDataTool.ts +1 -5
  234. package/template/examples/skills/tools/PremiumFeatureTool.ts +18 -18
  235. package/template/package.json +1 -1
@@ -28,8 +28,8 @@ import fs from 'fs';
28
28
  import { pluginRegistry } from './plugins/registry.js';
29
29
  import { agentPlugin } from './plugins/agent.plugin.js';
30
30
  import { shouldSkipFile } from './utils/common.js';
31
- import { findImportSource, resolveIdentifierToArray } from './utils/ast-helpers.js';
32
- import { resolvePathAlias } from './utils/path-resolver.js';
31
+ import { resolveModuleSpecifier, registerProjectRootDir } from './utils/path-resolver.js';
32
+ import { resolveArrayRefs, reportDeopt, formatSarifWarning, } from './utils/reference-resolver.js';
33
33
  /**
34
34
  * All primitive types and their configuration.
35
35
  * To add a new primitive type, just add an entry here.
@@ -73,6 +73,27 @@ export class AgentTraverser {
73
73
  tsConfigFilePath: path.join(rootDir, 'tsconfig.json'),
74
74
  skipAddingFilesFromTsConfig: true,
75
75
  });
76
+ // Register this Project → rootDir so plugin code that only has a
77
+ // SourceFile in hand (SkillPlugin's `resolveArrayRefs({ project })`
78
+ // call sites) can recover the correct rootDir via
79
+ // `getProjectRootDir(project)` instead of falling through to
80
+ // `process.cwd()`. Without this, tsconfig `paths` aliases in a
81
+ // skill's `tools: [...]` / `.addTools([...])` arrays resolve
82
+ // against whatever directory the CLI was invoked from — which
83
+ // regresses the per-rootDir guarantee the resolver promises.
84
+ registerProjectRootDir(this.project, this.rootDir);
85
+ }
86
+ /**
87
+ * Absolute paths of every SourceFile the traverser loaded during `traverse()`,
88
+ * including cross-root files pulled in by the reference resolver
89
+ * (e.g. `packages/shared/utils.ts` in a monorepo agent).
90
+ *
91
+ * The compiler reads this to include cross-root sources in
92
+ * `manifest.projectFiles`, so `lua push backup` backs up everything the
93
+ * compiler actually needed — not just files under `rootDir`. See BAC-69.
94
+ */
95
+ getAllLoadedSourceFilePaths() {
96
+ return this.project.getSourceFiles().map((sf) => sf.getFilePath());
76
97
  }
77
98
  /**
78
99
  * Log a debug message if debug mode is enabled.
@@ -98,21 +119,45 @@ export class AgentTraverser {
98
119
  return null;
99
120
  }
100
121
  this.log(`🤖 Found agent: ${agentConfig.name} in ${agentConfig.sourcePath}`);
101
- // Step 2: Load agent source file for import resolution
102
- const agentFile = this.project.addSourceFileAtPath(agentConfig.sourcePath);
103
- // Step 3: Collect all primitives (agent + its registered children)
122
+ // Step 2: Collect all primitives (agent + its registered children)
104
123
  const primitives = [];
105
124
  // The agent itself is a primitive
106
125
  const { refs: _refs, ...agentMetadata } = agentConfig;
107
126
  primitives.push(agentMetadata);
108
- // Discover child primitives from the agent's config arrays
127
+ // Discover child primitives from the agent's config arrays.
128
+ // The resolver already carries each ref's source file, so we don't need
129
+ // another `findImportSource` pass — we just ask the right plugin to
130
+ // detect the primitive in that file.
109
131
  for (const config of PRIMITIVE_TYPES) {
110
132
  const refs = agentConfig.refs.get(config.kind) || [];
111
133
  for (const ref of refs) {
112
- const sourcePath = this.resolveReference(ref, agentFile);
113
- if (!sourcePath)
134
+ // Inline-new refs at the agent-registration level (e.g.
135
+ // `mcpServers: [new LuaMCPServer({...})]`) can't be bundled: the
136
+ // class name is generic, so there's no source-level identifier
137
+ // the bundler can import. Tell the user to name the instance
138
+ // with a `const x = new ...`, and skip this ref — rather than
139
+ // hitting the fallback `detected.length === 1` path which would
140
+ // mis-attribute it to whichever primitive happens to be declared
141
+ // first in the agent file.
142
+ if (ref.newExpression && !ref.declaration) {
143
+ const className = ref.identifierName;
144
+ const { line, column } = ref.sourceFile.getLineAndColumnAtPos(ref.newExpression.getStart());
145
+ console.warn(formatSarifWarning({
146
+ ruleId: 'lua/unresolved-primitive-ref',
147
+ filePath: ref.sourceFile.getFilePath(),
148
+ line,
149
+ column,
150
+ message: `inline "new ${className}({...})" in agent.${config.configProperty} cannot be ` +
151
+ `bundled: the primitive has no source-level name the compiler can import`,
152
+ hint: `assign it first: \`const myPrimitive = new ${className}({...}); ` +
153
+ `${config.configProperty}: [myPrimitive]\``,
154
+ }));
114
155
  continue;
115
- const primitive = this.extractPrimitive(config.kind, sourcePath, ref.name);
156
+ }
157
+ const sourcePath = ref.sourceFile.getFilePath();
158
+ const primitive = this.extractPrimitive(config.kind, sourcePath, ref.identifierName, {
159
+ viaDefaultImport: ref.viaDefaultImport === true,
160
+ });
116
161
  if (!primitive)
117
162
  continue;
118
163
  primitives.push(primitive);
@@ -182,7 +227,15 @@ export class AgentTraverser {
182
227
  const detection = agentPlugin.detectWithConfig(sourceFile);
183
228
  if (!detection)
184
229
  return null;
185
- // Primitive ref discovery stays here (unique to traverser)
230
+ // Primitive ref discovery stays here (unique to traverser).
231
+ // Each kind gets its own walk with a fresh `visited` set — sharing
232
+ // one across kinds is incorrect: `followIdentifier` marks visit keys
233
+ // before resolving (for cycle detection), so a shared set makes the
234
+ // second kind see `webhooks` as "already visited" when it only shared
235
+ // an identifier with `jobs`, and silently drop the ref. That's the
236
+ // exact LUA-221-class silent-drop bug we're trying to eliminate.
237
+ // ts-morph caches `addSourceFileAtPath` on the Project anyway, so
238
+ // there's no cross-file-load cost from repeated walks.
186
239
  const refs = new Map();
187
240
  for (const primitiveType of PRIMITIVE_TYPES) {
188
241
  refs.set(primitiveType.kind, this.extractArrayRefs(detection.configNode, primitiveType.configProperty));
@@ -195,91 +248,82 @@ export class AgentTraverser {
195
248
  return result;
196
249
  }
197
250
  /**
198
- * Extract array references from an object literal property.
199
- * Handles both inline arrays and variable references (Identifiers).
251
+ * Extract array references from an object literal property using the
252
+ * shared reference resolver. Handles inline arrays, variable refs (same
253
+ * file and cross-file), spreads, property access, re-export barrels,
254
+ * and path aliases uniformly — see `reference-resolver.ts` for the
255
+ * supported expression shapes.
256
+ *
257
+ * On deopt (the resolver hit a dynamic expression it can't statically
258
+ * evaluate), emits a SARIF-style warning pointing at the offending node
259
+ * and keeps whatever partial value the resolver managed to produce.
260
+ * This is much more useful than the previous behavior — silently
261
+ * returning an empty list — which was the root of LUA-221.
200
262
  */
201
263
  extractArrayRefs(config, propName) {
202
- const refs = [];
203
- for (const prop of config.getProperties()) {
204
- if (Node.isPropertyAssignment(prop) && prop.getName() === propName) {
205
- const value = prop.getInitializer();
206
- if (!value)
207
- continue;
208
- // Resolve: inline array or variable reference to array
209
- const arrayExpr = Node.isArrayLiteralExpression(value)
210
- ? value
211
- : resolveIdentifierToArray(value);
212
- if (arrayExpr) {
213
- for (const element of arrayExpr.getElements()) {
214
- if (Node.isIdentifier(element)) {
215
- refs.push({ name: element.getText() });
216
- }
217
- else if (Node.isNewExpression(element)) {
218
- refs.push({ name: element.getExpression().getText() });
219
- }
220
- }
221
- }
222
- }
223
- }
224
- return refs;
225
- }
226
- // ===========================================================================
227
- // REFERENCE RESOLUTION
228
- // ===========================================================================
229
- /**
230
- * Resolve a primitive reference to its source file path.
231
- */
232
- resolveReference(ref, sourceFile) {
233
- // Check imports first, fall back to same file for local definitions
234
- // (e.g., const myJob = defineJob({ ... }); used in same file)
235
- return findImportSource(ref.name, sourceFile, this.resolveImportPath.bind(this));
236
- }
237
- /**
238
- * Resolve a module specifier to an absolute file path.
239
- */
240
- resolveImportPath(specifier, fromFile) {
241
- // Handle .js extension in modern TS (NodeNext module resolution)
242
- let normalized = specifier;
243
- if (specifier.endsWith('.js')) {
244
- normalized = specifier.slice(0, -3);
245
- }
246
- const extensions = ['.ts', '.tsx', '.js', '.jsx', '/index.ts', '/index.tsx', '/index.js'];
247
- // Try path alias resolution first (e.g., @/tools/MyTool)
248
- const aliasResolved = resolvePathAlias(normalized);
249
- if (aliasResolved) {
250
- for (const ext of extensions) {
251
- const fullPath = ext.startsWith('/') ? path.join(aliasResolved, ext) : aliasResolved + ext;
252
- if (fs.existsSync(fullPath)) {
253
- return fullPath;
254
- }
255
- }
256
- return aliasResolved + '.ts'; // fallback
257
- }
258
- // Handle relative imports
259
- if (normalized.startsWith('./') || normalized.startsWith('../')) {
260
- const dir = path.dirname(fromFile);
261
- const basePath = path.resolve(dir, normalized);
262
- for (const ext of extensions) {
263
- const fullPath = ext.startsWith('/') ? path.join(basePath, ext) : basePath + ext;
264
- if (fs.existsSync(fullPath)) {
265
- return fullPath;
266
- }
267
- }
264
+ const prop = config.getProperty(propName);
265
+ if (!prop || !Node.isPropertyAssignment(prop))
266
+ return [];
267
+ const value = prop.getInitializer();
268
+ if (!value)
269
+ return [];
270
+ // Fresh `visited` per call shared-across-kinds was a silent-drop bug
271
+ // (see comment in detectAgentInFile). `rootDir` flows through so the
272
+ // resolver's tsconfig-paths alias lookup uses this project's config,
273
+ // not process.cwd()'s (which leaks across multi-project Node runs).
274
+ const ctx = {
275
+ project: this.project,
276
+ rootDir: this.rootDir,
277
+ log: this.log.bind(this),
278
+ };
279
+ const result = resolveArrayRefs(value, ctx);
280
+ if (!result.confident) {
281
+ // Visible by default — swallowing a deopt here reproduces LUA-221.
282
+ console.warn(reportDeopt(result, propName));
268
283
  }
269
- return null;
284
+ return result.value;
270
285
  }
271
286
  /**
272
287
  * Resolve dependencies for a primitive by delegating to its plugin.
288
+ *
289
+ * Belt-and-suspenders try/catch around `addSourceFileAtPath`: by
290
+ * construction the resolver has already loaded this path into the
291
+ * project, so it should always be present. But if something upstream
292
+ * races (a test deletes a fixture, an LSP concurrent-compile deletes
293
+ * a file under us, a permissions error on re-read), throwing here
294
+ * would abort the whole compile with a stack trace. Emit a SARIF
295
+ * warning and return empty instead — the primitive itself will still
296
+ * appear in the manifest, it just won't have its nested tools/refs
297
+ * resolved, which the user can then investigate.
273
298
  */
274
299
  resolveReferencesForPrimitive(metadata, sourcePath) {
275
300
  const plugin = pluginRegistry.get(metadata.kind);
276
301
  if (!plugin?.resolveReferences) {
277
302
  return [];
278
303
  }
279
- const sourceFile = this.project.addSourceFileAtPath(sourcePath);
304
+ let sourceFile;
305
+ try {
306
+ sourceFile = this.project.addSourceFileAtPath(sourcePath);
307
+ }
308
+ catch (error) {
309
+ console.warn(formatSarifWarning({
310
+ ruleId: 'lua/missing-primitive-declaration',
311
+ filePath: sourcePath,
312
+ message: `unable to load source for ${metadata.kind} "${metadata.name}": ` +
313
+ (error instanceof Error ? error.message : String(error)),
314
+ hint: `verify the file exists and is readable; nested references ` +
315
+ `for this primitive will not be resolved`,
316
+ }));
317
+ return [];
318
+ }
319
+ // Plugins still have a `resolveImportPath` hook in their context
320
+ // (skill → tool resolution). Wire it to the shared resolver — both
321
+ // the agent-level walk and the per-primitive resolution flow now
322
+ // go through the same helper, so drift between them is impossible.
323
+ const rootDir = this.rootDir;
280
324
  const context = {
281
325
  project: this.project,
282
- resolveImportPath: this.resolveImportPath.bind(this),
326
+ resolveImportPath: (specifier, fromFile) => resolveModuleSpecifier(specifier, fromFile, rootDir) ?? null,
283
327
  getPlugin: (kind) => pluginRegistry.get(kind),
284
328
  log: this.log.bind(this),
285
329
  };
@@ -290,8 +334,20 @@ export class AgentTraverser {
290
334
  // ===========================================================================
291
335
  /**
292
336
  * Extract a primitive's metadata using its plugin's detect() method.
337
+ *
338
+ * Matching order:
339
+ * 1. If the ref reached the target via `import x from './t'`, prefer the
340
+ * default export on the target side — the consumer-side binding name
341
+ * (`x`) is arbitrary and won't line up with the target's exportName.
342
+ * Without this, a file with both a default-exported primitive and a
343
+ * named one would emit a spurious "missing primitive" warning just
344
+ * because `detected.length !== 1`.
345
+ * 2. Otherwise match by `exportName` or `name` equal to `refName`.
346
+ * 3. Singleton fallback: if the file declares exactly one primitive of
347
+ * this kind, assume it's the one the user meant (covers inline
348
+ * `export default defineJob({...})` single-primitive files).
293
349
  */
294
- extractPrimitive(kind, sourcePath, refName) {
350
+ extractPrimitive(kind, sourcePath, refName, opts = {}) {
295
351
  const plugin = pluginRegistry.get(kind);
296
352
  if (!plugin) {
297
353
  this.log(`⚠️ No plugin registered for kind: ${kind}`);
@@ -300,16 +356,65 @@ export class AgentTraverser {
300
356
  try {
301
357
  const file = this.project.addSourceFileAtPath(sourcePath);
302
358
  const detected = plugin.detect(file);
303
- const match = detected.find((d) => d.exportName === refName ||
304
- d.name === refName) || (detected.length === 1 ? detected[0] : null);
359
+ // Tier 1: `isDefaultExport` flag set by the plugin. Populated by
360
+ // `export default new LuaX({...})` and `export default defineX({...})`
361
+ // (inline shapes that `detectDefaultExport` can see directly).
362
+ let defaultMatch = opts.viaDefaultImport
363
+ ? detected.find((d) => d.isDefaultExport)
364
+ : undefined;
365
+ // Tier 2: the `export default <identifier>` shape. Plugins only
366
+ // flag `isDefaultExport` when the export assignment's expression
367
+ // is itself a `new X({...})` / `defineX({...})` — they don't
368
+ // chase an Identifier back to its declaration. When the user
369
+ // wrote `const chosen = new LuaX({...}); export default chosen`,
370
+ // `chosen` has `exportName === 'chosen'` and `isDefaultExport`
371
+ // is false, but semantically it IS the default export.
372
+ //
373
+ // We resolve this at match time by inspecting the file's
374
+ // ExportAssignments: if one points at an Identifier whose name
375
+ // equals a detected primitive's `exportName`, that primitive is
376
+ // the default export by reference.
377
+ if (opts.viaDefaultImport && !defaultMatch) {
378
+ for (const assign of file.getExportAssignments()) {
379
+ if (assign.isExportEquals())
380
+ continue;
381
+ const expr = assign.getExpression();
382
+ if (!Node.isIdentifier(expr))
383
+ continue;
384
+ const targetName = expr.getText();
385
+ defaultMatch = detected.find((d) => d.exportName === targetName);
386
+ if (defaultMatch)
387
+ break;
388
+ }
389
+ }
390
+ const match = defaultMatch ??
391
+ detected.find((d) => d.exportName === refName ||
392
+ d.name === refName) ??
393
+ (detected.length === 1 ? detected[0] : null);
305
394
  if (!match) {
306
- this.log(`⚠️ Could not find ${kind} "${refName}" in ${sourcePath}`);
395
+ // Visible by default, not gated on `debug`. The agent referenced
396
+ // a primitive we located on disk but the plugin couldn't find one
397
+ // in that file — the primitive silently drops out of the manifest
398
+ // unless the user knows to look, which is exactly the kind of
399
+ // silence LUA-221 taught us to eliminate.
400
+ console.warn(formatSarifWarning({
401
+ ruleId: 'lua/missing-primitive-declaration',
402
+ filePath: sourcePath,
403
+ message: `agent references ${kind} "${refName}" but ${path.basename(sourcePath)} ` +
404
+ `does not define a matching primitive`,
405
+ hint: `export a named ${plugin.displayName.toLowerCase()} declaration as "${refName}", ` +
406
+ `or adjust the import so it points to the file that does`,
407
+ }));
307
408
  return null;
308
409
  }
309
410
  return match;
310
411
  }
311
412
  catch (error) {
312
- this.log(`⚠️ Error extracting ${kind} from ${sourcePath}: ${error}`);
413
+ console.warn(formatSarifWarning({
414
+ ruleId: 'lua/missing-primitive-declaration',
415
+ filePath: sourcePath,
416
+ message: `error extracting ${kind} "${refName}": ${error instanceof Error ? error.message : String(error)}`,
417
+ }));
313
418
  }
314
419
  return null;
315
420
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-traverser.js","sourceRoot":"","sources":["../../src/compiler/agent-traverser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-traverser.js","sourceRoot":"","sources":["../../src/compiler/agent-traverser.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,22 @@ export declare class Compiler {
13
13
  private project;
14
14
  private options;
15
15
  private bundler;
16
+ /**
17
+ * Absolute paths of source files loaded by `AgentTraverser` that live
18
+ * outside `rootDir` but inside the containing workspace.
19
+ *
20
+ * Populated during `scanForPrimitives()` and consumed by
21
+ * `collectProjectFiles()` so cross-root files are included in the
22
+ * backup manifest. See BAC-69 and [workspace.ts](src/compiler/utils/workspace.ts).
23
+ */
24
+ private externalWorkspaceFiles;
25
+ /**
26
+ * Memoized workspace root. `findWorkspaceRoot` walks the tree + hits FS
27
+ * markers (pnpm-workspace.yaml, lerna.json, etc.) — cheap but not free,
28
+ * and called from three different hot paths (scan, collect, store).
29
+ * Populated lazily via `getWorkspaceRoot()`.
30
+ */
31
+ private _workspaceRoot?;
16
32
  constructor(options: CompilerOptions);
17
33
  /**
18
34
  * Run the compilation.
@@ -27,6 +43,22 @@ export declare class Compiler {
27
43
  * Also caches the agent info for manifest creation (avoids re-traversing).
28
44
  */
29
45
  private scanForPrimitives;
46
+ /**
47
+ * Resolve the containing workspace root for this compilation, memoized
48
+ * for the lifetime of the Compiler instance. Returns the normalized
49
+ * absolute path; for standalone agents it's identical to `rootDir`.
50
+ */
51
+ private getWorkspaceRoot;
52
+ /**
53
+ * Return absolute paths of files the traverser loaded that live outside
54
+ * `rootDir` but inside the containing workspace.
55
+ *
56
+ * We deliberately skip:
57
+ * - Files under `rootDir` (the normal `collectProjectFiles` walker handles them)
58
+ * - Files inside `node_modules` (third-party; restored via `npm install`)
59
+ * - Files outside the detected workspace root (not our code)
60
+ */
61
+ private collectExternalWorkspaceFiles;
30
62
  /**
31
63
  * Fallback discovery: scan all source files for primitives when no LuaAgent is found.
32
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,OAAO,EAEL,eAAe,EACf,iBAAiB,EAQlB,MAAM,YAAY,CAAC;AAGpB,cAAc,YAAY,CAAC;AAM3B,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,EAAE,eAAe;IAsBpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAyG3C;;;;;;;OAOG;YACW,iBAAiB;IAe/B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,YAAY;IA2BpB;;;OAGG;YACW,iBAAiB;IAgC/B;;;;;;;;;;;;;;;OAeG;YACW,gBAAgB;IA0C9B;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,cAAc;IA8B5B;;OAEG;YACW,uBAAuB;IAwDrC;;;OAGG;YACW,iBAAiB;IAgC/B;;;;;OAKG;YACW,cAAc;IAwB5B;;;OAGG;YACW,uBAAuB;IAmBrC;;;;;;;;;;;;;;;OAeG;YACW,mBAAmB;IA4CjC;;OAEG;IACH,OAAO,CAAC,OAAO;IA6Bf;;;;OAIG;YACW,YAAY;IAkB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;;OAGG;YACW,qBAAqB;IAUnC;;OAEG;IACH,OAAO,CAAC,GAAG;IAIX;;OAEG;IACH,OAAO,CAAC,OAAO;CAKhB;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAGlF"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuBH,OAAO,EAEL,eAAe,EACf,iBAAiB,EAQlB,MAAM,YAAY,CAAC;AAGpB,cAAc,YAAY,CAAC;AAM3B,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,OAAO,CAAU;IACzB;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB,CAAgB;IAE9C;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAAC,CAAS;gBAEpB,OAAO,EAAE,eAAe;IA4BpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA6H3C;;;;;;;OAOG;YACW,iBAAiB;IAyB/B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;;;;;;;OAQG;IACH,OAAO,CAAC,6BAA6B;IAyBrC;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,YAAY;IA2BpB;;;OAGG;YACW,iBAAiB;IAgC/B;;;;;;;;;;;;;;;OAeG;YACW,gBAAgB;IA0C9B;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,cAAc;IA8B5B;;OAEG;YACW,uBAAuB;IAgErC;;;OAGG;YACW,iBAAiB;IAoC/B;;;;;OAKG;YACW,cAAc;IAwB5B;;;OAGG;YACW,uBAAuB;IAmBrC;;;;;;;;;;;;;;;OAeG;YACW,mBAAmB;IAuEjC;;OAEG;IACH,OAAO,CAAC,OAAO;IA6Bf;;;;OAIG;YACW,YAAY;IAkB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;;OAGG;YACW,qBAAqB;IAUnC;;OAEG;IACH,OAAO,CAAC,GAAG;IAIX;;OAEG;IACH,OAAO,CAAC,OAAO;CAKhB;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAGlF"}