@namzu/sdk 5.0.0 → 5.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 (181) hide show
  1. package/CHANGELOG.md +463 -0
  2. package/README.md +2 -2
  3. package/dist/agents/__tests__/run-agent-forwarding.test.d.ts +2 -0
  4. package/dist/agents/__tests__/run-agent-forwarding.test.d.ts.map +1 -0
  5. package/dist/agents/__tests__/run-agent-forwarding.test.js +76 -0
  6. package/dist/agents/__tests__/run-agent-forwarding.test.js.map +1 -0
  7. package/dist/agents/__tests__/run-completed-stop-reason.test.d.ts +2 -0
  8. package/dist/agents/__tests__/run-completed-stop-reason.test.d.ts.map +1 -0
  9. package/dist/agents/__tests__/run-completed-stop-reason.test.js +50 -0
  10. package/dist/agents/__tests__/run-completed-stop-reason.test.js.map +1 -0
  11. package/dist/agents/index.d.ts +1 -0
  12. package/dist/agents/index.d.ts.map +1 -1
  13. package/dist/agents/index.js +4 -0
  14. package/dist/agents/index.js.map +1 -1
  15. package/dist/agents/runAgent.d.ts +34 -0
  16. package/dist/agents/runAgent.d.ts.map +1 -1
  17. package/dist/agents/runAgent.js +5 -3
  18. package/dist/agents/runAgent.js.map +1 -1
  19. package/dist/config/runtime.d.ts +30 -30
  20. package/dist/constants/tools/__tests__/dangerous-patterns.test.d.ts +2 -0
  21. package/dist/constants/tools/__tests__/dangerous-patterns.test.d.ts.map +1 -0
  22. package/dist/constants/tools/__tests__/dangerous-patterns.test.js +54 -0
  23. package/dist/constants/tools/__tests__/dangerous-patterns.test.js.map +1 -0
  24. package/dist/constants/tools/index.d.ts.map +1 -1
  25. package/dist/constants/tools/index.js +28 -1
  26. package/dist/constants/tools/index.js.map +1 -1
  27. package/dist/contracts/a2a.d.ts +44 -44
  28. package/dist/directory/__tests__/derive.test.d.ts +2 -0
  29. package/dist/directory/__tests__/derive.test.d.ts.map +1 -0
  30. package/dist/directory/__tests__/derive.test.js +111 -0
  31. package/dist/directory/__tests__/derive.test.js.map +1 -0
  32. package/dist/directory/__tests__/load-diagnostics.test.d.ts +2 -0
  33. package/dist/directory/__tests__/load-diagnostics.test.d.ts.map +1 -0
  34. package/dist/directory/__tests__/load-diagnostics.test.js +106 -0
  35. package/dist/directory/__tests__/load-diagnostics.test.js.map +1 -0
  36. package/dist/directory/__tests__/load-directory.test.d.ts +2 -0
  37. package/dist/directory/__tests__/load-directory.test.d.ts.map +1 -0
  38. package/dist/directory/__tests__/load-directory.test.js +196 -0
  39. package/dist/directory/__tests__/load-directory.test.js.map +1 -0
  40. package/dist/directory/__tests__/subagents.test.d.ts +2 -0
  41. package/dist/directory/__tests__/subagents.test.d.ts.map +1 -0
  42. package/dist/directory/__tests__/subagents.test.js +117 -0
  43. package/dist/directory/__tests__/subagents.test.js.map +1 -0
  44. package/dist/directory/__tests__/supervisor-budget.test.d.ts +2 -0
  45. package/dist/directory/__tests__/supervisor-budget.test.d.ts.map +1 -0
  46. package/dist/directory/__tests__/supervisor-budget.test.js +97 -0
  47. package/dist/directory/__tests__/supervisor-budget.test.js.map +1 -0
  48. package/dist/directory/derive-supervisor.d.ts +58 -0
  49. package/dist/directory/derive-supervisor.d.ts.map +1 -0
  50. package/dist/directory/derive-supervisor.js +88 -0
  51. package/dist/directory/derive-supervisor.js.map +1 -0
  52. package/dist/directory/derive.d.ts +12 -0
  53. package/dist/directory/derive.d.ts.map +1 -0
  54. package/dist/directory/derive.js +58 -0
  55. package/dist/directory/derive.js.map +1 -0
  56. package/dist/directory/index.d.ts +7 -0
  57. package/dist/directory/index.d.ts.map +1 -0
  58. package/dist/directory/index.js +5 -0
  59. package/dist/directory/index.js.map +1 -0
  60. package/dist/directory/load.d.ts +14 -0
  61. package/dist/directory/load.d.ts.map +1 -0
  62. package/dist/directory/load.js +488 -0
  63. package/dist/directory/load.js.map +1 -0
  64. package/dist/directory/scan.d.ts +36 -0
  65. package/dist/directory/scan.d.ts.map +1 -0
  66. package/dist/directory/scan.js +136 -0
  67. package/dist/directory/scan.js.map +1 -0
  68. package/dist/directory/types.d.ts +215 -0
  69. package/dist/directory/types.d.ts.map +1 -0
  70. package/dist/directory/types.js +8 -0
  71. package/dist/directory/types.js.map +1 -0
  72. package/dist/plugin/__tests__/path-containment.test.d.ts +2 -0
  73. package/dist/plugin/__tests__/path-containment.test.d.ts.map +1 -0
  74. package/dist/plugin/__tests__/path-containment.test.js +91 -0
  75. package/dist/plugin/__tests__/path-containment.test.js.map +1 -0
  76. package/dist/plugin/lifecycle.d.ts.map +1 -1
  77. package/dist/plugin/lifecycle.js +3 -3
  78. package/dist/plugin/lifecycle.js.map +1 -1
  79. package/dist/plugin/loader.d.ts.map +1 -1
  80. package/dist/plugin/loader.js +12 -2
  81. package/dist/plugin/loader.js.map +1 -1
  82. package/dist/provider/__tests__/model-version.test.d.ts +2 -0
  83. package/dist/provider/__tests__/model-version.test.d.ts.map +1 -0
  84. package/dist/provider/__tests__/model-version.test.js +80 -0
  85. package/dist/provider/__tests__/model-version.test.js.map +1 -0
  86. package/dist/provider/__tests__/strict-schema.test.d.ts +2 -0
  87. package/dist/provider/__tests__/strict-schema.test.d.ts.map +1 -0
  88. package/dist/provider/__tests__/strict-schema.test.js +109 -0
  89. package/dist/provider/__tests__/strict-schema.test.js.map +1 -0
  90. package/dist/provider/__tests__/typed-error-classification.test.d.ts +2 -0
  91. package/dist/provider/__tests__/typed-error-classification.test.d.ts.map +1 -0
  92. package/dist/provider/__tests__/typed-error-classification.test.js +123 -0
  93. package/dist/provider/__tests__/typed-error-classification.test.js.map +1 -0
  94. package/dist/provider/model-version.d.ts +60 -0
  95. package/dist/provider/model-version.d.ts.map +1 -0
  96. package/dist/provider/model-version.js +64 -0
  97. package/dist/provider/model-version.js.map +1 -0
  98. package/dist/provider/retry.d.ts.map +1 -1
  99. package/dist/provider/retry.js +23 -7
  100. package/dist/provider/retry.js.map +1 -1
  101. package/dist/provider/strict-schema.d.ts +49 -0
  102. package/dist/provider/strict-schema.d.ts.map +1 -0
  103. package/dist/provider/strict-schema.js +112 -0
  104. package/dist/provider/strict-schema.js.map +1 -0
  105. package/dist/public-runtime.d.ts +6 -1
  106. package/dist/public-runtime.d.ts.map +1 -1
  107. package/dist/public-runtime.js +21 -1
  108. package/dist/public-runtime.js.map +1 -1
  109. package/dist/public-tools.d.ts +1 -0
  110. package/dist/public-tools.d.ts.map +1 -1
  111. package/dist/public-tools.js +4 -0
  112. package/dist/public-tools.js.map +1 -1
  113. package/dist/public-types.d.ts +2 -0
  114. package/dist/public-types.d.ts.map +1 -1
  115. package/dist/registry/tool/__tests__/strict-registration.test.d.ts +2 -0
  116. package/dist/registry/tool/__tests__/strict-registration.test.d.ts.map +1 -0
  117. package/dist/registry/tool/__tests__/strict-registration.test.js +82 -0
  118. package/dist/registry/tool/__tests__/strict-registration.test.js.map +1 -0
  119. package/dist/registry/tool/execute.d.ts.map +1 -1
  120. package/dist/registry/tool/execute.js +16 -0
  121. package/dist/registry/tool/execute.js.map +1 -1
  122. package/dist/runtime/query/__tests__/stream-recovery.test.js +5 -0
  123. package/dist/runtime/query/__tests__/stream-recovery.test.js.map +1 -1
  124. package/dist/runtime/query/result.d.ts.map +1 -1
  125. package/dist/runtime/query/result.js +5 -0
  126. package/dist/runtime/query/result.js.map +1 -1
  127. package/dist/tools/builtins/__tests__/edit-insert-reachable.test.js +7 -1
  128. package/dist/tools/builtins/__tests__/edit-insert-reachable.test.js.map +1 -1
  129. package/dist/tools/builtins/__tests__/edit.test.js +1 -1
  130. package/dist/tools/builtins/__tests__/edit.test.js.map +1 -1
  131. package/dist/tools/builtins/edit.d.ts.map +1 -1
  132. package/dist/tools/builtins/edit.js +20 -2
  133. package/dist/tools/builtins/edit.js.map +1 -1
  134. package/dist/types/plugin/index.d.ts +4 -4
  135. package/dist/types/provider/errors.d.ts +0 -17
  136. package/dist/types/provider/errors.d.ts.map +1 -1
  137. package/dist/types/provider/errors.js +60 -0
  138. package/dist/types/provider/errors.js.map +1 -1
  139. package/dist/types/run/events.d.ts +17 -2
  140. package/dist/types/run/events.d.ts.map +1 -1
  141. package/dist/types/run/events.js.map +1 -1
  142. package/dist/types/verification/index.d.ts +6 -6
  143. package/package.json +1 -1
  144. package/src/agents/__tests__/run-agent-forwarding.test.ts +85 -0
  145. package/src/agents/__tests__/run-completed-stop-reason.test.ts +59 -0
  146. package/src/agents/index.ts +8 -0
  147. package/src/agents/runAgent.ts +30 -4
  148. package/src/constants/tools/__tests__/dangerous-patterns.test.ts +62 -0
  149. package/src/constants/tools/index.ts +28 -1
  150. package/src/directory/__tests__/derive.test.ts +135 -0
  151. package/src/directory/__tests__/load-diagnostics.test.ts +126 -0
  152. package/src/directory/__tests__/load-directory.test.ts +243 -0
  153. package/src/directory/__tests__/subagents.test.ts +155 -0
  154. package/src/directory/__tests__/supervisor-budget.test.ts +117 -0
  155. package/src/directory/derive-supervisor.ts +149 -0
  156. package/src/directory/derive.ts +70 -0
  157. package/src/directory/index.ts +27 -0
  158. package/src/directory/load.ts +556 -0
  159. package/src/directory/scan.ts +163 -0
  160. package/src/directory/types.ts +254 -0
  161. package/src/plugin/__tests__/path-containment.test.ts +107 -0
  162. package/src/plugin/lifecycle.ts +3 -3
  163. package/src/plugin/loader.ts +12 -2
  164. package/src/provider/__tests__/model-version.test.ts +93 -0
  165. package/src/provider/__tests__/strict-schema.test.ts +133 -0
  166. package/src/provider/__tests__/typed-error-classification.test.ts +143 -0
  167. package/src/provider/model-version.ts +98 -0
  168. package/src/provider/retry.ts +23 -7
  169. package/src/provider/strict-schema.ts +125 -0
  170. package/src/public-runtime.ts +31 -0
  171. package/src/public-tools.ts +4 -0
  172. package/src/public-types.ts +8 -0
  173. package/src/registry/tool/__tests__/strict-registration.test.ts +115 -0
  174. package/src/registry/tool/execute.ts +16 -0
  175. package/src/runtime/query/__tests__/stream-recovery.test.ts +5 -0
  176. package/src/runtime/query/result.ts +5 -0
  177. package/src/tools/builtins/__tests__/edit-insert-reachable.test.ts +8 -2
  178. package/src/tools/builtins/__tests__/edit.test.ts +1 -1
  179. package/src/tools/builtins/edit.ts +20 -2
  180. package/src/types/provider/errors.ts +71 -0
  181. package/src/types/run/events.ts +15 -2
@@ -0,0 +1,36 @@
1
+ import type { DirectoryDiagnostic, DirectorySlot } from './types.js';
2
+ export interface ScannedFile {
3
+ readonly path: string;
4
+ readonly relativePath: string;
5
+ readonly id: string;
6
+ }
7
+ export interface ScanResult {
8
+ readonly files: readonly ScannedFile[];
9
+ readonly diagnostics: readonly DirectoryDiagnostic[];
10
+ }
11
+ /**
12
+ * List the code files directly inside one slot directory.
13
+ *
14
+ * **Symlinks are refused, not followed.** A directory handed to this loader is
15
+ * caller-supplied, and a link inside it pointing anywhere else is the
16
+ * link-following weakness (CWE-59) with the loader as the vehicle: the file
17
+ * that gets imported is not the file that was listed. The estate already
18
+ * decided this for its filesystem tools; the same rule applies to a directory
19
+ * whose author may not be the host.
20
+ *
21
+ * That is stricter than the SDK's own `discoverSkills`, and deliberately so —
22
+ * that function walks a host's own trusted tree, where following a link is a
23
+ * convenience rather than a hole. Reusing it here would have inherited a
24
+ * threat model chosen for a different caller.
25
+ *
26
+ * Only the top level is read. A nested directory is reported so an author
27
+ * learns their file was not picked up, except when its name starts with `.`
28
+ * or `_`, which is the conventional way to say "not for you" and is honoured
29
+ * silently.
30
+ */
31
+ export declare function scanSlot(root: string, slot: DirectorySlot, dirName: string): Promise<ScanResult>;
32
+ /** Canonical absolute root, or undefined when the directory does not exist. */
33
+ export declare function canonicalRoot(dir: string): Promise<string | undefined>;
34
+ /** Posix-normalised, for a `relativePath` that reads the same on every platform. */
35
+ export declare function toPosix(value: string): string;
36
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/directory/scan.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAKpE,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAA;CACpD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,QAAQ,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAoGrB;AAED,+EAA+E;AAC/E,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ5E;AAED,oFAAoF;AACpF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C"}
@@ -0,0 +1,136 @@
1
+ import { lstat, readdir, realpath } from 'node:fs/promises';
2
+ import { basename, extname, join, relative, sep } from 'node:path';
3
+ import { resolveWithinReal } from '../tools/paths.js';
4
+ /** Extensions Node can import directly, given its own type stripping. */
5
+ const CODE_EXTENSIONS = new Set(['.ts', '.mts', '.cts', '.js', '.mjs', '.cjs']);
6
+ /**
7
+ * List the code files directly inside one slot directory.
8
+ *
9
+ * **Symlinks are refused, not followed.** A directory handed to this loader is
10
+ * caller-supplied, and a link inside it pointing anywhere else is the
11
+ * link-following weakness (CWE-59) with the loader as the vehicle: the file
12
+ * that gets imported is not the file that was listed. The estate already
13
+ * decided this for its filesystem tools; the same rule applies to a directory
14
+ * whose author may not be the host.
15
+ *
16
+ * That is stricter than the SDK's own `discoverSkills`, and deliberately so —
17
+ * that function walks a host's own trusted tree, where following a link is a
18
+ * convenience rather than a hole. Reusing it here would have inherited a
19
+ * threat model chosen for a different caller.
20
+ *
21
+ * Only the top level is read. A nested directory is reported so an author
22
+ * learns their file was not picked up, except when its name starts with `.`
23
+ * or `_`, which is the conventional way to say "not for you" and is honoured
24
+ * silently.
25
+ */
26
+ export async function scanSlot(root, slot, dirName) {
27
+ const dir = join(root, dirName);
28
+ const files = [];
29
+ const diagnostics = [];
30
+ let entries;
31
+ try {
32
+ entries = await readdir(dir, { withFileTypes: true });
33
+ }
34
+ catch {
35
+ // An absent optional directory is not news.
36
+ return { files, diagnostics };
37
+ }
38
+ for (const entry of entries) {
39
+ const name = entry.name;
40
+ if (name.startsWith('.') || name.startsWith('_'))
41
+ continue;
42
+ const candidate = join(dir, name);
43
+ // `readdir(withFileTypes)` reports the link itself, so this catches a
44
+ // symlink before anything resolves it.
45
+ let stats;
46
+ try {
47
+ stats = await lstat(candidate);
48
+ }
49
+ catch {
50
+ continue;
51
+ }
52
+ if (stats.isSymbolicLink()) {
53
+ diagnostics.push({
54
+ code: 'symlink_refused',
55
+ severity: 'warning',
56
+ message: `${dirName}/${name} is a symbolic link and was not loaded. The file that would be imported is not the file listed here, so links are refused rather than followed.`,
57
+ path: candidate,
58
+ });
59
+ continue;
60
+ }
61
+ // Two slots hold DIRECTORIES rather than files: a skill is a folder
62
+ // with a SKILL.md, and a delegate is a whole project directory.
63
+ const directorySlot = slot === 'skills' || slot === 'agents';
64
+ if (stats.isDirectory()) {
65
+ if (directorySlot) {
66
+ files.push({
67
+ path: candidate,
68
+ relativePath: `${dirName}/${name}`,
69
+ id: name,
70
+ });
71
+ continue;
72
+ }
73
+ diagnostics.push({
74
+ code: 'unscanned_directory',
75
+ severity: 'warning',
76
+ message: `${dirName}/${name}/ is a directory and was not scanned. Only files directly inside ${dirName}/ are loaded; prefix a directory with "." or "_" to declare it private and silence this.`,
77
+ path: candidate,
78
+ });
79
+ continue;
80
+ }
81
+ if (!stats.isFile())
82
+ continue;
83
+ // A loose file in a directory slot is not an error worth a diagnostic —
84
+ // a README beside the skill folders is normal.
85
+ if (directorySlot)
86
+ continue;
87
+ if (!CODE_EXTENSIONS.has(extname(name))) {
88
+ diagnostics.push({
89
+ code: 'unscanned_directory',
90
+ severity: 'warning',
91
+ message: `${dirName}/${name} is not a module this loader can import (expected one of ${[...CODE_EXTENSIONS].join(', ')}).`,
92
+ path: candidate,
93
+ });
94
+ continue;
95
+ }
96
+ // Containment even though the path was built from a directory listing:
97
+ // the check costs nothing and it is the one place a future change to
98
+ // how `dir` is derived would otherwise escape unnoticed.
99
+ let contained;
100
+ try {
101
+ contained = await resolveWithinReal(root, relative(root, candidate));
102
+ }
103
+ catch {
104
+ diagnostics.push({
105
+ code: 'path_escapes_root',
106
+ severity: 'warning',
107
+ message: `${dirName}/${name} resolves outside the project root and was not loaded.`,
108
+ path: candidate,
109
+ });
110
+ continue;
111
+ }
112
+ files.push({
113
+ path: contained,
114
+ relativePath: `${dirName}/${name}`,
115
+ id: basename(name, extname(name)),
116
+ });
117
+ }
118
+ files.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
119
+ return { files, diagnostics };
120
+ }
121
+ /** Canonical absolute root, or undefined when the directory does not exist. */
122
+ export async function canonicalRoot(dir) {
123
+ try {
124
+ const resolved = await realpath(dir);
125
+ const stats = await lstat(resolved);
126
+ return stats.isDirectory() ? resolved : undefined;
127
+ }
128
+ catch {
129
+ return undefined;
130
+ }
131
+ }
132
+ /** Posix-normalised, for a `relativePath` that reads the same on every platform. */
133
+ export function toPosix(value) {
134
+ return value.split(sep).join('/');
135
+ }
136
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/directory/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ import type { AgentIdentity, RunAgentOptions } from '../agents/runAgent.js';
2
+ import type { Message } from '../types/message/index.js';
3
+ import type { LLMProvider } from '../types/provider/index.js';
4
+ import type { Skill } from '../types/skills/index.js';
5
+ import type { ToolDefinition } from '../types/tool/index.js';
6
+ /**
7
+ * A directory in the convention this package reads.
8
+ *
9
+ * `channels/` and `schedules/` are deliberately absent. They were scoped in
10
+ * and then cut: a trigger definition of `{id, handler}` cannot express a
11
+ * signed webhook, because signature verification needs the RAW body and a
12
+ * handler that receives a parsed one can never check an HMAC. It carries no
13
+ * idempotency key either, while webhooks retry and schedules double-fire, and
14
+ * a cron field with no timezone story is a declaration nothing drives. Each of
15
+ * those is a `major` waiting to happen on a published type. The layering
16
+ * question — does a convention belong outside the kernel — was answered yes
17
+ * and stands; the shape question had simply never been asked.
18
+ */
19
+ export type DirectorySlot = 'agent' | 'instructions' | 'tools' | 'skills' | 'agents';
20
+ export declare const ALL_SLOTS: readonly DirectorySlot[];
21
+ /**
22
+ * Whether the loader executes the project's code.
23
+ *
24
+ * `'evaluate'` imports every module-backed file, and importing a module RUNS
25
+ * it — a top-level side effect in `tools/search.ts` happens during
26
+ * `loadDirectory`, in this process, with this process's privileges.
27
+ *
28
+ * `'skip'` imports nothing. The manifest still carries the full structural
29
+ * truth — every path, the instructions, the skills, duplicate and ambiguity
30
+ * detection — and module-backed entries report `'not_loaded'`. This is what a
31
+ * CI gate, a UI file tree, and triage of a directory you did not write all
32
+ * actually want, and it is the only mode that is safe against a directory
33
+ * whose author you are not.
34
+ */
35
+ export type ModuleMode = 'evaluate' | 'skip';
36
+ export type ModuleImporter = (fileUrl: string) => Promise<unknown>;
37
+ export type SourceOutcome = 'loaded' | 'failed'
38
+ /** Refused, or not a code file. Carries a diagnostic unless `.`/`_`-prefixed. */
39
+ | 'skipped'
40
+ /** `modules: 'skip'` — never imported, so nothing is known about its exports. */
41
+ | 'not_loaded'
42
+ /**
43
+ * The import outran `moduleTimeoutMs`.
44
+ *
45
+ * NOT a synonym for `'failed'`. `import()` cannot be cancelled: the module
46
+ * is still executing, may still complete, and its top-level side effects
47
+ * may land after `loadDirectory` has returned. Node then caches it, so a
48
+ * second load in the same process can see the same file succeed instantly.
49
+ * A distinct outcome because "we stopped waiting" and "it did not work"
50
+ * lead a reader to different places.
51
+ */
52
+ | 'abandoned';
53
+ export interface SourceRef {
54
+ /** Absolute and canonical — symlinks already resolved. */
55
+ readonly path: string;
56
+ /** Posix, relative to the project root: `tools/search.ts`. */
57
+ readonly relativePath: string;
58
+ readonly slot: DirectorySlot;
59
+ /** Path-derived, extension stripped. `tools/search.ts` → `search`. */
60
+ readonly id: string;
61
+ readonly outcome: SourceOutcome;
62
+ }
63
+ export type DirectoryDiagnosticSeverity = 'error' | 'warning';
64
+ export type DirectoryDiagnosticCode = 'instructions_missing' | 'instructions_empty' | 'module_load_failed' | 'module_load_abandoned' | 'no_default_export' | 'not_a_tool' | 'duplicate_tool_name' | 'invalid_config' | 'skill_load_failed' | 'symlink_refused' | 'path_escapes_root' | 'unscanned_directory' | 'root_missing' | 'subagent_load_failed' | 'subagent_too_deep';
65
+ /**
66
+ * Something the loader could not do, reported rather than dropped.
67
+ *
68
+ * A loader that quietly skips a broken tool produces a project running with
69
+ * half its capabilities and nothing to say so. Every refusal names its file
70
+ * and its reason, and an inspector can render the list without re-reading the
71
+ * directory.
72
+ */
73
+ export interface DirectoryDiagnostic {
74
+ readonly code: DirectoryDiagnosticCode;
75
+ readonly severity: DirectoryDiagnosticSeverity;
76
+ readonly message: string;
77
+ /** Absolute path, when the diagnostic is about a file. */
78
+ readonly path?: string;
79
+ /**
80
+ * The underlying error's message, when there was one.
81
+ *
82
+ * This package never reads file CONTENTS into a diagnostic. What appears
83
+ * here is text produced by Node or thrown by the authored module, and is
84
+ * exactly as trustworthy as that module — a `throw new Error(secret)` puts
85
+ * the secret here, and no amount of redaction on our side changes that.
86
+ */
87
+ readonly cause?: string;
88
+ }
89
+ export interface ToolEntry {
90
+ readonly source: SourceRef;
91
+ readonly definition: ToolDefinition;
92
+ }
93
+ /**
94
+ * A delegate this project declares, loaded as a project in its own right.
95
+ *
96
+ * Recursion rather than a new concept: a sub-agent directory has the same
97
+ * shape as its parent, so `agents/researcher/` is read by the same loader
98
+ * that read the root. One level only — a delegate may not declare delegates of its
99
+ * own in this version. Unbounded nesting is a topology decision (who may
100
+ * spawn whom, and how deep) that belongs to whoever composes the system, and
101
+ * shipping it before that decision means shipping a default nobody chose.
102
+ */
103
+ export interface SubAgentEntry {
104
+ readonly source: SourceRef;
105
+ /** The delegate's own manifest — its instructions, tools and config. */
106
+ readonly manifest: DirectoryManifest;
107
+ /** Directory-derived, and the id a supervisor delegates to. */
108
+ readonly id: string;
109
+ }
110
+ export interface SkillEntry {
111
+ readonly source: SourceRef;
112
+ readonly skill: Skill;
113
+ }
114
+ /**
115
+ * What `agent.ts` may declare.
116
+ *
117
+ * Deliberately a plain object, default-exported, with no authoring helper. A
118
+ * `defineAgent` here would collide with the SDK's existing export of that
119
+ * name, and `export default { model: 'x' } satisfies DirectoryConfig` already
120
+ * gets the type checking a helper would provide.
121
+ *
122
+ * There is no factory form. It would buy environment-conditioned config that
123
+ * `model: process.env.MODEL` already does inside a module that is being
124
+ * evaluated anyway, and it would cost a user-function-invocation phase with a
125
+ * hang mode outside what `moduleTimeoutMs` promises to bound.
126
+ */
127
+ export interface DirectoryConfig {
128
+ readonly model?: string;
129
+ readonly temperature?: number;
130
+ readonly maxIterations?: number;
131
+ readonly tokenBudget?: number;
132
+ readonly timeoutMs?: number;
133
+ /** Names the agent in traces and events when declared. */
134
+ readonly name?: string;
135
+ /** Free-form labels for an inspector. Never interpreted by this package. */
136
+ readonly metadata?: Readonly<Record<string, string>>;
137
+ }
138
+ export interface DirectoryManifest {
139
+ /** Absolute, canonical path to the `agent/` directory. */
140
+ readonly root: string;
141
+ /**
142
+ * A DISPLAY LABEL — `config.name`, else the directory's basename, else
143
+ * `'agent'`.
144
+ *
145
+ * Not a trace key, and `deriveRunOptions` forwards it to `runAgent` only
146
+ * when `agent.ts` declared one. A name guessed from a directory basename
147
+ * would collide across sibling projects and silently merge their traces,
148
+ * which is worse than the SDK's own default.
149
+ */
150
+ readonly name: string;
151
+ /** Verbatim `instructions.md`, trailing whitespace removed. */
152
+ readonly instructions: string;
153
+ readonly config: DirectoryConfig;
154
+ readonly tools: readonly ToolEntry[];
155
+ readonly skills: readonly SkillEntry[];
156
+ /** Delegates this project declares. Empty unless it has an `agents/` slot. */
157
+ readonly agents: readonly SubAgentEntry[];
158
+ /** Every file considered, with its outcome. An inspector's ground truth. */
159
+ readonly sources: readonly SourceRef[];
160
+ /** Which slots were scanned. What `ok` is scoped to. */
161
+ readonly included: readonly DirectorySlot[];
162
+ readonly modules: ModuleMode;
163
+ }
164
+ export interface DirectoryLoadResult {
165
+ readonly manifest: DirectoryManifest;
166
+ readonly diagnostics: readonly DirectoryDiagnostic[];
167
+ /**
168
+ * True when no diagnostic is an error.
169
+ *
170
+ * Scoped to `manifest.included`: it means "every slot you asked for is
171
+ * sound", never "this directory is complete". A caller that scanned only
172
+ * `tools` learns nothing here about `instructions`.
173
+ */
174
+ readonly ok: boolean;
175
+ }
176
+ export interface LoadDirectoryOptions {
177
+ /** See {@link ModuleMode}. Default `'evaluate'`. */
178
+ readonly modules?: ModuleMode;
179
+ /**
180
+ * Replace the import.
181
+ *
182
+ * The exit for a project Node's own type stripping cannot read — enums,
183
+ * decorators, tsconfig path aliases — where a host passes `jiti.import` or
184
+ * a `tsx`-registered importer. Three lines in the host, and no bundler
185
+ * dependency in this tree; the same rule `LLMProvider` follows.
186
+ *
187
+ * Ignored under `modules: 'skip'`, where nothing is imported at all.
188
+ */
189
+ readonly importModule?: ModuleImporter;
190
+ /**
191
+ * Slots to scan. Default: all of them.
192
+ *
193
+ * The tuple type makes an empty array unrepresentable in TypeScript on
194
+ * purpose. This is an allow-list, and an allow-list that admits everything
195
+ * when empty is the fail-open shape this estate removed elsewhere; here an
196
+ * empty list scans nothing, which is the closed reading.
197
+ */
198
+ readonly include?: readonly [DirectorySlot, ...DirectorySlot[]];
199
+ /**
200
+ * Per-module deadline. Default 10_000ms.
201
+ *
202
+ * Bounds THIS LOADER, not the module. An import that expires is not
203
+ * cancelled — see {@link SourceOutcome} `'abandoned'`.
204
+ */
205
+ readonly moduleTimeoutMs?: number;
206
+ }
207
+ export interface DeriveRunOptionsInput {
208
+ readonly provider: LLMProvider;
209
+ readonly prompt: string | Message[];
210
+ /** Wins over `agent.ts`. Required when `agent.ts` names no model. */
211
+ readonly model?: string;
212
+ readonly identity?: AgentIdentity;
213
+ readonly overrides?: Partial<Omit<RunAgentOptions, 'provider' | 'prompt'>>;
214
+ }
215
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/directory/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export const ALL_SLOTS = [
2
+ 'agent',
3
+ 'instructions',
4
+ 'tools',
5
+ 'skills',
6
+ 'agents',
7
+ ];
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/directory/types.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,SAAS,GAA6B;IAClD,OAAO;IACP,cAAc;IACd,OAAO;IACP,QAAQ;IACR,QAAQ;CACR,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=path-containment.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-containment.test.d.ts","sourceRoot":"","sources":["../../../src/plugin/__tests__/path-containment.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,91 @@
1
+ import { mkdirSync, mkdtempSync, symlinkSync, writeFileSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { describe, expect, it } from 'vitest';
5
+ import { PluginRegistry } from '../../registry/plugin/index.js';
6
+ import { ToolRegistry } from '../../registry/tool/execute.js';
7
+ import { getRootLogger } from '../../utils/logger.js';
8
+ import { PluginLifecycleManager } from '../lifecycle.js';
9
+ import { discoverPlugins } from '../loader.js';
10
+ /**
11
+ * The plugin subsystem loads THIRD-PARTY code, which makes it the worst place
12
+ * in this repo to be missing the containment its filesystem tools got this
13
+ * week. It had none: zero `lstat`, zero `isSymbolicLink`, zero `resolveWithin`
14
+ * across the loader and the lifecycle manager.
15
+ *
16
+ * Two holes, and the second is the serious one.
17
+ *
18
+ * `discoverPlugins` used `stat`, which follows a link and reports on its
19
+ * TARGET — so a symlinked entry pointing anywhere on disk was admitted as a
20
+ * plugin directory. The directory listed was not the directory loaded.
21
+ *
22
+ * And `PluginLifecycleManager` built its import path with
23
+ * `join(plugin.rootDir, toolPath)` where `toolPath` comes out of the
24
+ * MANIFEST — a file the plugin author writes. `"tools": ["../../../evil.js"]`
25
+ * left the plugin directory entirely and was imported, which runs it.
26
+ */
27
+ const CAN_SYMLINK = (() => {
28
+ try {
29
+ const probe = mkdtempSync(join(tmpdir(), 'namzu-plug-sym-'));
30
+ symlinkSync(probe, join(probe, 'self'), 'dir');
31
+ return true;
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ })();
37
+ function pluginsDir() {
38
+ return mkdtempSync(join(tmpdir(), 'namzu-plugins-'));
39
+ }
40
+ function writePlugin(parent, name, manifest) {
41
+ const dir = join(parent, name);
42
+ mkdirSync(dir, { recursive: true });
43
+ writeFileSync(join(dir, 'plugin.json'), JSON.stringify({ name, version: '1.0.0', description: 'test', ...manifest }));
44
+ return dir;
45
+ }
46
+ describe('plugin discovery refuses a symlinked directory', () => {
47
+ it.skipIf(!CAN_SYMLINK)('does not admit a link as a plugin directory', async () => {
48
+ const outside = mkdtempSync(join(tmpdir(), 'namzu-outside-'));
49
+ writePlugin(outside, 'evil', { tools: [] });
50
+ const parent = pluginsDir();
51
+ writePlugin(parent, 'honest', { tools: [] });
52
+ symlinkSync(join(outside, 'evil'), join(parent, 'linked'), 'dir');
53
+ const found = await discoverPlugins(parent);
54
+ expect(found.map((p) => p.split(/[\\/]/).pop())).toEqual(['honest']);
55
+ });
56
+ it('still finds an ordinary plugin directory', async () => {
57
+ const parent = pluginsDir();
58
+ writePlugin(parent, 'ordinary', { tools: [] });
59
+ expect(await discoverPlugins(parent)).toHaveLength(1);
60
+ });
61
+ });
62
+ function managerFor(def) {
63
+ const pluginRegistry = new PluginRegistry();
64
+ pluginRegistry.register(def);
65
+ return new PluginLifecycleManager({
66
+ pluginRegistry,
67
+ toolRegistry: new ToolRegistry(),
68
+ log: getRootLogger(),
69
+ });
70
+ }
71
+ describe('a manifest cannot name a file outside its own plugin', () => {
72
+ it('refuses a tool path that climbs out', async () => {
73
+ // The manifest is written by the plugin author. Without containment the
74
+ // named file was imported — which is to say, executed.
75
+ const outside = mkdtempSync(join(tmpdir(), 'namzu-outside-'));
76
+ writeFileSync(join(outside, 'evil.js'), 'export const tools = []');
77
+ const parent = pluginsDir();
78
+ const escaping = join('..', outside.split(/[\/]/).pop(), 'evil.js');
79
+ const dir = writePlugin(parent, 'sneaky', { tools: [escaping] });
80
+ const manager = managerFor({
81
+ id: 'sneaky',
82
+ manifest: { name: 'sneaky', version: '1.0.0', description: 't', tools: [escaping] },
83
+ scope: 'project',
84
+ status: 'installed',
85
+ rootDir: dir,
86
+ installedAt: 0,
87
+ });
88
+ await expect(manager.enable('sneaky')).rejects.toThrow(/escapes the working directory/);
89
+ });
90
+ });
91
+ //# sourceMappingURL=path-containment.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-containment.test.js","sourceRoot":"","sources":["../../../src/plugin/__tests__/path-containment.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/plugin/lifecycle.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAO/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EACX,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAGhB,WAAW,EACX,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAGlF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAQhD,MAAM,WAAW,4BAA4B;IAC5C,cAAc,EAAE,cAAc,CAAA;IAC9B,YAAY,EAAE,oBAAoB,CAAA;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAEzD;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAA;CACnD;AAED,qBAAa,sBAAsB;IAClC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAQP;IACb,OAAO,CAAC,mBAAmB,CAAqD;IAChF,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,GAAG,CAAQ;IACnB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY,CAAkB;gBAE1B,MAAM,EAAE,4BAA4B;IAYhD;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAgBlE,EAAE,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAIvC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAKlC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoCzE,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAsGjC,eAAe;YAgDf,qBAAqB;IAkC7B,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4D1C,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5C,YAAY,CACjB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,EACtD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/C,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqH9B,OAAO,CAAC,IAAI;CAWZ"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/plugin/lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAO/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EACX,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAGhB,WAAW,EACX,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAGlF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAQhD,MAAM,WAAW,4BAA4B;IAC5C,cAAc,EAAE,cAAc,CAAA;IAC9B,YAAY,EAAE,oBAAoB,CAAA;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAEzD;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAA;CACnD;AAED,qBAAa,sBAAsB;IAClC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAQP;IACb,OAAO,CAAC,mBAAmB,CAAqD;IAChF,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,GAAG,CAAQ;IACnB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY,CAAkB;gBAE1B,MAAM,EAAE,4BAA4B;IAYhD;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAgBlE,EAAE,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAIvC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAKlC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoCzE,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAsGjC,eAAe;YAgDf,qBAAqB;IAkC7B,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4D1C,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5C,YAAY,CACjB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,EACtD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/C,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqH9B,OAAO,CAAC,IAAI;CAWZ"}
@@ -1,10 +1,10 @@
1
- import { join } from 'node:path';
2
1
  import { pathToFileURL } from 'node:url';
3
2
  import { mcpToolToToolDefinition } from '../connector/mcp/adapter.js';
4
3
  import { MCPClient } from '../connector/mcp/client.js';
5
4
  import { MCPToolDiscovery } from '../connector/mcp/discovery.js';
6
5
  import { mcpPromptToToolDefinition } from '../connector/mcp/prompt-adapter.js';
7
6
  import { DEFAULT_HOOK_PRIORITY, HOOK_TIMEOUT_MS, PLUGIN_NAMESPACE_SEPARATOR, } from '../constants/plugin/index.js';
7
+ import { resolveWithinReal } from '../tools/paths.js';
8
8
  import { toErrorMessage } from '../utils/error.js';
9
9
  import { generatePluginId } from '../utils/id.js';
10
10
  import { assertEnableable, loadPluginManifest } from './loader.js';
@@ -132,7 +132,7 @@ export class PluginLifecycleManager {
132
132
  // Load tools
133
133
  if (manifest.tools && manifest.tools.length > 0) {
134
134
  for (const toolPath of manifest.tools) {
135
- const absolutePath = join(plugin.rootDir, toolPath);
135
+ const absolutePath = await resolveWithinReal(plugin.rootDir, toolPath);
136
136
  const fileUrl = pathToFileURL(absolutePath).href;
137
137
  const mod = (await import(fileUrl));
138
138
  if (!mod.tools || !Array.isArray(mod.tools)) {
@@ -149,7 +149,7 @@ export class PluginLifecycleManager {
149
149
  // Load hooks
150
150
  if (manifest.hooks && manifest.hooks.length > 0) {
151
151
  for (const hookPath of manifest.hooks) {
152
- const absolutePath = join(plugin.rootDir, hookPath);
152
+ const absolutePath = await resolveWithinReal(plugin.rootDir, hookPath);
153
153
  const fileUrl = pathToFileURL(absolutePath).href;
154
154
  const mod = (await import(fileUrl));
155
155
  if (!mod.hooks || !Array.isArray(mod.hooks)) {
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/plugin/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/plugin/lifecycle.ts"],"names":[],"mappings":"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"}