@nodetool-ai/config 0.7.0-rc.23 → 0.8.1

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 (89) hide show
  1. package/README.md +50 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/__tests__/credit-policy.test.d.ts +2 -0
  4. package/dist/__tests__/credit-policy.test.d.ts.map +1 -0
  5. package/dist/__tests__/credit-policy.test.js +48 -0
  6. package/dist/__tests__/credit-policy.test.js.map +1 -0
  7. package/dist/__tests__/env-file.test.d.ts +2 -0
  8. package/dist/__tests__/env-file.test.d.ts.map +1 -0
  9. package/dist/__tests__/env-file.test.js +100 -0
  10. package/dist/__tests__/env-file.test.js.map +1 -0
  11. package/dist/__tests__/google-workspace.test.d.ts +2 -0
  12. package/dist/__tests__/google-workspace.test.d.ts.map +1 -0
  13. package/dist/__tests__/google-workspace.test.js +40 -0
  14. package/dist/__tests__/google-workspace.test.js.map +1 -0
  15. package/dist/__tests__/retention.test.d.ts +2 -0
  16. package/dist/__tests__/retention.test.d.ts.map +1 -0
  17. package/dist/__tests__/retention.test.js +21 -0
  18. package/dist/__tests__/retention.test.js.map +1 -0
  19. package/dist/byte-limits.d.ts +13 -0
  20. package/dist/byte-limits.d.ts.map +1 -0
  21. package/dist/byte-limits.js +28 -0
  22. package/dist/byte-limits.js.map +1 -0
  23. package/dist/credit-policy.d.ts +25 -0
  24. package/dist/credit-policy.d.ts.map +1 -0
  25. package/dist/credit-policy.js +63 -0
  26. package/dist/credit-policy.js.map +1 -0
  27. package/dist/deployment.d.ts +8 -0
  28. package/dist/deployment.d.ts.map +1 -0
  29. package/dist/deployment.js +19 -0
  30. package/dist/deployment.js.map +1 -0
  31. package/dist/env-file.d.ts +33 -0
  32. package/dist/env-file.d.ts.map +1 -0
  33. package/dist/env-file.js +83 -0
  34. package/dist/env-file.js.map +1 -0
  35. package/dist/environment.d.ts.map +1 -1
  36. package/dist/environment.js +20 -17
  37. package/dist/environment.js.map +1 -1
  38. package/dist/google-workspace.d.ts +3 -0
  39. package/dist/google-workspace.d.ts.map +1 -0
  40. package/dist/google-workspace.js +23 -0
  41. package/dist/google-workspace.js.map +1 -0
  42. package/dist/index.d.ts +12 -3
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +12 -3
  45. package/dist/index.js.map +1 -1
  46. package/dist/logging.d.ts.map +1 -1
  47. package/dist/logging.js +46 -28
  48. package/dist/logging.js.map +1 -1
  49. package/dist/node-import.d.ts +37 -0
  50. package/dist/node-import.d.ts.map +1 -0
  51. package/dist/node-import.js +119 -0
  52. package/dist/node-import.js.map +1 -0
  53. package/dist/optional-modules.d.ts +8 -0
  54. package/dist/optional-modules.d.ts.map +1 -0
  55. package/dist/optional-modules.js +42 -0
  56. package/dist/optional-modules.js.map +1 -0
  57. package/dist/package-asset-registry.d.ts +102 -0
  58. package/dist/package-asset-registry.d.ts.map +1 -0
  59. package/dist/package-asset-registry.js +154 -0
  60. package/dist/package-asset-registry.js.map +1 -0
  61. package/dist/package-assets.d.ts +52 -0
  62. package/dist/package-assets.d.ts.map +1 -0
  63. package/dist/package-assets.js +98 -0
  64. package/dist/package-assets.js.map +1 -0
  65. package/dist/paths.d.ts +52 -23
  66. package/dist/paths.d.ts.map +1 -1
  67. package/dist/paths.js +166 -47
  68. package/dist/paths.js.map +1 -1
  69. package/dist/retention.d.ts +3 -0
  70. package/dist/retention.d.ts.map +1 -0
  71. package/dist/retention.js +19 -0
  72. package/dist/retention.js.map +1 -0
  73. package/dist/setting-catalog.d.ts +28 -0
  74. package/dist/setting-catalog.d.ts.map +1 -0
  75. package/dist/setting-catalog.js +161 -0
  76. package/dist/setting-catalog.js.map +1 -0
  77. package/dist/storage-config.d.ts +45 -0
  78. package/dist/storage-config.d.ts.map +1 -0
  79. package/dist/storage-config.js +62 -0
  80. package/dist/storage-config.js.map +1 -0
  81. package/package.json +23 -8
  82. package/dist/diagnostics.d.ts +0 -27
  83. package/dist/diagnostics.d.ts.map +0 -1
  84. package/dist/diagnostics.js +0 -42
  85. package/dist/diagnostics.js.map +0 -1
  86. package/dist/settings.d.ts +0 -29
  87. package/dist/settings.d.ts.map +0 -1
  88. package/dist/settings.js +0 -29
  89. package/dist/settings.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Runtime asset registry — the single source of truth for data files that
3
+ * packages ship next to their compiled code and load at runtime (provider
4
+ * manifests today).
5
+ *
6
+ * Three layers consume it and must agree, which is exactly why it is one
7
+ * list instead of three conventions:
8
+ *
9
+ * 1. `package-assets.ts` — runtime resolution. Refuses to load a file that
10
+ * is not registered, so a forgotten registration fails loudly in dev
11
+ * instead of silently in the packaged app.
12
+ * 2. `scripts/bundle-backend.mjs` — stages every entry next to the
13
+ * bundled server.mjs and fails the build when a source file is missing
14
+ * or an on-disk manifest is not registered.
15
+ * 3. `scripts/verify-backend-bundle.mjs` — final artifact check
16
+ * that every manifest referenced by server.mjs is staged.
17
+ *
18
+ * `path` is relative to the owning package's `dist/`. Basenames must be
19
+ * unique across the registry: the packaged layout is flat, every file lands
20
+ * directly next to server.mjs.
21
+ *
22
+ * This module must stay free of imports — build scripts load it straight
23
+ * from `dist/` without pulling in the rest of the config package.
24
+ */
25
+ export interface PackageAssetRef {
26
+ /** npm package that ships the file, e.g. "@nodetool-ai/kie-nodes". */
27
+ pkg: string;
28
+ /** File path relative to the package's dist/, e.g. "kie-manifest.json". */
29
+ path: string;
30
+ }
31
+ export declare const PACKAGE_RUNTIME_ASSETS: readonly PackageAssetRef[];
32
+ /**
33
+ * A directory of runtime files a package ships next to its sources rather than
34
+ * inside `dist/`, staged into the bundle as a directory instead of flattened
35
+ * by basename.
36
+ *
37
+ * Separate from {@link PACKAGE_RUNTIME_ASSETS} because the resolution rule is
38
+ * different in both halves: the source is the package root, not its build
39
+ * output (font binaries are inputs, and copying three megabytes through `tsc`
40
+ * would only duplicate them), and the staged copy keeps its directory, because
41
+ * the web serves the files by name over HTTP. The purpose is the same one C6
42
+ * names — the bundler stages it, the verifier checks it, so an unstaged file
43
+ * fails the build instead of the product.
44
+ */
45
+ export interface PackageAssetDirRef {
46
+ /** npm package that ships the directory, e.g. "@nodetool-ai/timeline". */
47
+ pkg: string;
48
+ /** Directory relative to the package ROOT, e.g. "fonts". */
49
+ path: string;
50
+ /** Directory name under the bundle root the files are staged into. */
51
+ bundleDir: string;
52
+ /**
53
+ * Every file that must be present, in the source directory and in the
54
+ * artifact. Named rather than globbed: a build that silently ships nine of
55
+ * ten faces renders one family as a fallback, which looks like a design
56
+ * choice rather than a packaging bug.
57
+ */
58
+ files: readonly string[];
59
+ }
60
+ /**
61
+ * The bundled font corpus (D8). The file list mirrors `BUNDLED_FONT_FILES` in
62
+ * `@nodetool-ai/timeline`; this module imports nothing, so
63
+ * `packages/execution/tests/timeline-font-registry.test.ts` is what holds the
64
+ * two lists together.
65
+ */
66
+ export declare const PACKAGE_RUNTIME_ASSET_DIRS: readonly PackageAssetDirRef[];
67
+ /**
68
+ * Where the sandbox packs that ship with NodeTool live, in the repo and in the
69
+ * packaged artifact. Every host reads one of these two locations, so both names
70
+ * live here rather than in each script.
71
+ *
72
+ * The packs are config-only npm packages (a `nodetool.sandboxModules` manifest
73
+ * plus a SKILL.md) that no host code may import, so they are not workspaces and
74
+ * npm never links them into `node_modules`. Discovery therefore reads them from
75
+ * disk: `packages/sandbox-packs/` in a checkout, and `_sandbox/` next to
76
+ * `server.mjs` in the bundle, where `bundle-backend.mjs` stages every one of
77
+ * them and `verify-backend-bundle.mjs` checks the staged tree against each
78
+ * pack's own manifest. Both are directories of package directories, which is
79
+ * what {@link listPackageDirs} in `@nodetool-ai/node-sdk` enumerates — scoped
80
+ * names sit one level deeper, exactly as in `node_modules`.
81
+ *
82
+ * Staging is a scan, not a list: a pack added to the source directory ships
83
+ * without touching this file.
84
+ */
85
+ export declare const SHIPPED_SANDBOX_PACKS_SOURCE_DIR = "packages/sandbox-packs";
86
+ /** The staged copy's directory name, relative to the bundled `server.mjs`. */
87
+ export declare const SHIPPED_SANDBOX_PACKS_BUNDLE_DIR = "_sandbox";
88
+ /**
89
+ * The system skills that ship with NodeTool.
90
+ *
91
+ * A system skill is a `SKILL.md` — frontmatter naming it, Markdown body — under
92
+ * a directory of its own, read-only at runtime. Same two-root shape as the
93
+ * sandbox packs above and for the same reason: nothing imports them, so npm
94
+ * links nothing, and each host reads them from where its own build put them.
95
+ * `NODETOOL_SYSTEM_SKILLS_DIR` overrides both.
96
+ */
97
+ export declare const SHIPPED_SYSTEM_SKILLS_SOURCE_DIR = "packages/system-skills";
98
+ /** The staged copy's directory name, relative to the bundled `server.mjs`. */
99
+ export declare const SHIPPED_SYSTEM_SKILLS_BUNDLE_DIR = "_skills";
100
+ /** Registry lookup by exact pkg + path. */
101
+ export declare function findPackageAsset(pkg: string, path: string, registry?: readonly PackageAssetRef[]): PackageAssetRef | undefined;
102
+ //# sourceMappingURL=package-asset-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-asset-registry.d.ts","sourceRoot":"","sources":["../src/package-asset-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,sBAAsB,EAAE,SAAS,eAAe,EAU5D,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,kBAAkB,EA0EnE,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AAEzE,8EAA8E;AAC9E,eAAO,MAAM,gCAAgC,aAAa,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AAEzE,8EAA8E;AAC9E,eAAO,MAAM,gCAAgC,YAAY,CAAC;AAE1D,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,SAAS,eAAe,EAA2B,GAC5D,eAAe,GAAG,SAAS,CAE7B"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Runtime asset registry — the single source of truth for data files that
3
+ * packages ship next to their compiled code and load at runtime (provider
4
+ * manifests today).
5
+ *
6
+ * Three layers consume it and must agree, which is exactly why it is one
7
+ * list instead of three conventions:
8
+ *
9
+ * 1. `package-assets.ts` — runtime resolution. Refuses to load a file that
10
+ * is not registered, so a forgotten registration fails loudly in dev
11
+ * instead of silently in the packaged app.
12
+ * 2. `scripts/bundle-backend.mjs` — stages every entry next to the
13
+ * bundled server.mjs and fails the build when a source file is missing
14
+ * or an on-disk manifest is not registered.
15
+ * 3. `scripts/verify-backend-bundle.mjs` — final artifact check
16
+ * that every manifest referenced by server.mjs is staged.
17
+ *
18
+ * `path` is relative to the owning package's `dist/`. Basenames must be
19
+ * unique across the registry: the packaged layout is flat, every file lands
20
+ * directly next to server.mjs.
21
+ *
22
+ * This module must stay free of imports — build scripts load it straight
23
+ * from `dist/` without pulling in the rest of the config package.
24
+ */
25
+ export const PACKAGE_RUNTIME_ASSETS = [
26
+ { pkg: "@nodetool-ai/atlascloud-nodes", path: "atlascloud-manifest.json" },
27
+ { pkg: "@nodetool-ai/higgsfield-nodes", path: "higgsfield-manifest.json" },
28
+ { pkg: "@nodetool-ai/fal-nodes", path: "fal-manifest.json" },
29
+ { pkg: "@nodetool-ai/kie-nodes", path: "kie-manifest.json" },
30
+ { pkg: "@nodetool-ai/replicate-nodes", path: "replicate-manifest.json" },
31
+ { pkg: "@nodetool-ai/runtime", path: "providers/aki-manifest.json" },
32
+ { pkg: "@nodetool-ai/together-nodes", path: "together-manifest.json" },
33
+ { pkg: "@nodetool-ai/topaz-nodes", path: "topaz-manifest.json" },
34
+ { pkg: "@nodetool-ai/video-nodes", path: "render3d-page.js" }
35
+ ];
36
+ /**
37
+ * The bundled font corpus (D8). The file list mirrors `BUNDLED_FONT_FILES` in
38
+ * `@nodetool-ai/timeline`; this module imports nothing, so
39
+ * `packages/execution/tests/timeline-font-registry.test.ts` is what holds the
40
+ * two lists together.
41
+ */
42
+ export const PACKAGE_RUNTIME_ASSET_DIRS = [
43
+ {
44
+ pkg: "@nodetool-ai/timeline",
45
+ path: "fonts",
46
+ bundleDir: "fonts",
47
+ files: [
48
+ "BebasNeue-Regular.ttf",
49
+ "Inter-ExtraBold.ttf",
50
+ "Inter-Italic-Variable.ttf",
51
+ "Inter-SemiBold.ttf",
52
+ "Inter-Variable.ttf",
53
+ "JetBrainsMono-Italic-Variable.ttf",
54
+ "JetBrainsMono-Variable.ttf",
55
+ "Lora-Italic-Variable.ttf",
56
+ "Lora-Variable.ttf",
57
+ "OFL-BebasNeue.txt",
58
+ "OFL-Inter.txt",
59
+ "OFL-JetBrainsMono.txt",
60
+ "OFL-Lora.txt",
61
+ "OFL-PlayfairDisplay.txt",
62
+ "OFL-SpaceGrotesk.txt",
63
+ "PlayfairDisplay-Italic-Variable.ttf",
64
+ "PlayfairDisplay-Variable.ttf",
65
+ "SpaceGrotesk-Variable.ttf"
66
+ ]
67
+ },
68
+ {
69
+ // The shipped timeline compositions (D11). Built by
70
+ // `scripts/build-example-compositions.mjs` from
71
+ // `scripts/example-compositions/compositions.mjs`, and read straight off
72
+ // disk by the `compositions` capability module — no database, no user — so
73
+ // an unstaged file means `list_compositions` reports only what a user has
74
+ // saved and the shipped half silently disappears from the packaged app.
75
+ pkg: "@nodetool-ai/base-nodes",
76
+ path: "nodetool/examples/compositions",
77
+ bundleDir: "examples/compositions",
78
+ files: [
79
+ "callout.composition.json",
80
+ "caption-bar.composition.json",
81
+ "cta-end-card.composition.json",
82
+ "logo-sting.composition.json",
83
+ "lower-third.composition.json",
84
+ "number-ticker.composition.json",
85
+ "title-slam.composition.json",
86
+ "window-frame.composition.json",
87
+ "word-cards.composition.json",
88
+ "title-card.composition.json"
89
+ ]
90
+ },
91
+ {
92
+ // The Blender op scripts (D5). Staged whole next to the bundled server;
93
+ // every file is named so an unstaged module fails the build instead of
94
+ // the product.
95
+ pkg: "@nodetool-ai/blender-nodes",
96
+ path: "blender_ops",
97
+ bundleDir: "_blender_ops",
98
+ files: [
99
+ "run_job.py",
100
+ "framing.py",
101
+ "errors.py",
102
+ "depth.py",
103
+ "exr.py",
104
+ "ops/__init__.py",
105
+ "ops/common.py",
106
+ "ops/render_image.py",
107
+ "ops/render_passes.py",
108
+ "ops/render_animation.py",
109
+ "ops/prepare_for_engine.py",
110
+ "ops/export_model.py",
111
+ "tests/test_framing.py",
112
+ "tests/test_depth.py",
113
+ "tests/test_exr.py"
114
+ ]
115
+ }
116
+ ];
117
+ /**
118
+ * Where the sandbox packs that ship with NodeTool live, in the repo and in the
119
+ * packaged artifact. Every host reads one of these two locations, so both names
120
+ * live here rather than in each script.
121
+ *
122
+ * The packs are config-only npm packages (a `nodetool.sandboxModules` manifest
123
+ * plus a SKILL.md) that no host code may import, so they are not workspaces and
124
+ * npm never links them into `node_modules`. Discovery therefore reads them from
125
+ * disk: `packages/sandbox-packs/` in a checkout, and `_sandbox/` next to
126
+ * `server.mjs` in the bundle, where `bundle-backend.mjs` stages every one of
127
+ * them and `verify-backend-bundle.mjs` checks the staged tree against each
128
+ * pack's own manifest. Both are directories of package directories, which is
129
+ * what {@link listPackageDirs} in `@nodetool-ai/node-sdk` enumerates — scoped
130
+ * names sit one level deeper, exactly as in `node_modules`.
131
+ *
132
+ * Staging is a scan, not a list: a pack added to the source directory ships
133
+ * without touching this file.
134
+ */
135
+ export const SHIPPED_SANDBOX_PACKS_SOURCE_DIR = "packages/sandbox-packs";
136
+ /** The staged copy's directory name, relative to the bundled `server.mjs`. */
137
+ export const SHIPPED_SANDBOX_PACKS_BUNDLE_DIR = "_sandbox";
138
+ /**
139
+ * The system skills that ship with NodeTool.
140
+ *
141
+ * A system skill is a `SKILL.md` — frontmatter naming it, Markdown body — under
142
+ * a directory of its own, read-only at runtime. Same two-root shape as the
143
+ * sandbox packs above and for the same reason: nothing imports them, so npm
144
+ * links nothing, and each host reads them from where its own build put them.
145
+ * `NODETOOL_SYSTEM_SKILLS_DIR` overrides both.
146
+ */
147
+ export const SHIPPED_SYSTEM_SKILLS_SOURCE_DIR = "packages/system-skills";
148
+ /** The staged copy's directory name, relative to the bundled `server.mjs`. */
149
+ export const SHIPPED_SYSTEM_SKILLS_BUNDLE_DIR = "_skills";
150
+ /** Registry lookup by exact pkg + path. */
151
+ export function findPackageAsset(pkg, path, registry = PACKAGE_RUNTIME_ASSETS) {
152
+ return registry.find((a) => a.pkg === pkg && a.path === path);
153
+ }
154
+ //# sourceMappingURL=package-asset-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-asset-registry.js","sourceRoot":"","sources":["../src/package-asset-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Guarded access to registered package runtime assets.
3
+ *
4
+ * Packages ship data files (provider manifests) next to their compiled code
5
+ * and load them at runtime. The file's location differs by deployment:
6
+ *
7
+ * - **dev / npm install**: the file resolves through package exports, e.g.
8
+ * `@nodetool-ai/kie-nodes/kie-manifest.json` → `<pkg>/dist/kie-manifest.json`.
9
+ * - **packaged Electron app**: esbuild flattens the whole backend into one
10
+ * `server.mjs`, so `import.meta.url`-relative paths all point at the bundle
11
+ * root, where `bundle-backend.mjs` stages each file by basename.
12
+ *
13
+ * This module is the single choke point for those loads. Every asset must be
14
+ * declared in `package-asset-registry.ts` — an unregistered ref throws
15
+ * immediately, in dev, with the fix in the message. Resolution outcomes are
16
+ * recorded and queryable via `getPackageAssetResolutions()` for diagnostics.
17
+ */
18
+ import { type PackageAssetRef } from "./package-asset-registry.js";
19
+ /** How a requested asset resolved, for startup/health diagnostics. */
20
+ export interface PackageAssetResolution {
21
+ pkg: string;
22
+ path: string;
23
+ /** Absolute path the asset resolved to, or null when resolution failed. */
24
+ resolvedPath: string | null;
25
+ /** "package" = via package exports (dev/npm), "importer" = next to the importing module (packaged bundle). */
26
+ via: "package" | "importer" | null;
27
+ error?: string;
28
+ }
29
+ /** Every asset requested so far and how it resolved. */
30
+ export declare function getPackageAssetResolutions(): PackageAssetResolution[];
31
+ /**
32
+ * Resolve a registered asset to an absolute file path.
33
+ *
34
+ * Tries package-exports resolution first (dev / npm layout), then a file with
35
+ * the asset's basename next to the importing module (the flattened packaged
36
+ * layout — and the dev layout for same-package assets). Throws with both
37
+ * attempted locations when neither exists.
38
+ *
39
+ * @param ref - Registered asset (pkg + dist-relative path).
40
+ * @param importerUrl - The caller's `import.meta.url`. Required: in the
41
+ * packaged app it points at the bundle root where assets are staged.
42
+ * @param registry - Overridable for tests only.
43
+ */
44
+ export declare function resolvePackageAssetPath(ref: PackageAssetRef, importerUrl: string, registry?: readonly PackageAssetRef[]): string;
45
+ /**
46
+ * Load a registered JSON asset. Loads through `require` rather than an `fs`
47
+ * read: the values flow into provider API requests, and a module load keeps
48
+ * static, trusted data from being modelled as untrusted file input
49
+ * (CodeQL js/file-access-to-http) — and gets caching for free.
50
+ */
51
+ export declare function loadPackageAssetJson<T>(ref: PackageAssetRef, importerUrl: string, registry?: readonly PackageAssetRef[]): T;
52
+ //# sourceMappingURL=package-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-assets.d.ts","sourceRoot":"","sources":["../src/package-assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAcrC,sEAAsE;AACtE,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8GAA8G;IAC9G,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,wDAAwD;AACxD,wBAAgB,0BAA0B,IAAI,sBAAsB,EAAE,CAErE;AAWD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,SAAS,eAAe,EAA2B,GAC5D,MAAM,CA2CR;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,SAAS,eAAe,EAA2B,GAC5D,CAAC,CAOH"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Guarded access to registered package runtime assets.
3
+ *
4
+ * Packages ship data files (provider manifests) next to their compiled code
5
+ * and load them at runtime. The file's location differs by deployment:
6
+ *
7
+ * - **dev / npm install**: the file resolves through package exports, e.g.
8
+ * `@nodetool-ai/kie-nodes/kie-manifest.json` → `<pkg>/dist/kie-manifest.json`.
9
+ * - **packaged Electron app**: esbuild flattens the whole backend into one
10
+ * `server.mjs`, so `import.meta.url`-relative paths all point at the bundle
11
+ * root, where `bundle-backend.mjs` stages each file by basename.
12
+ *
13
+ * This module is the single choke point for those loads. Every asset must be
14
+ * declared in `package-asset-registry.ts` — an unregistered ref throws
15
+ * immediately, in dev, with the fix in the message. Resolution outcomes are
16
+ * recorded and queryable via `getPackageAssetResolutions()` for diagnostics.
17
+ */
18
+ import { IS_NODE, getNodeBuiltinSync } from "./node-import.js";
19
+ import { createLogger } from "./logging.js";
20
+ import { PACKAGE_RUNTIME_ASSETS, findPackageAsset } from "./package-asset-registry.js";
21
+ const log = createLogger("nodetool.config.package-assets");
22
+ const nodeModule = getNodeBuiltinSync("node:module");
23
+ const nodeFs = getNodeBuiltinSync("node:fs");
24
+ const nodeUrl = getNodeBuiltinSync("node:url");
25
+ const resolutions = new Map();
26
+ /** Every asset requested so far and how it resolved. */
27
+ export function getPackageAssetResolutions() {
28
+ return [...resolutions.values()];
29
+ }
30
+ function record(resolution) {
31
+ resolutions.set(`${resolution.pkg}/${resolution.path}`, resolution);
32
+ }
33
+ function basenameOf(assetPath) {
34
+ const parts = assetPath.split("/");
35
+ return parts[parts.length - 1];
36
+ }
37
+ /**
38
+ * Resolve a registered asset to an absolute file path.
39
+ *
40
+ * Tries package-exports resolution first (dev / npm layout), then a file with
41
+ * the asset's basename next to the importing module (the flattened packaged
42
+ * layout — and the dev layout for same-package assets). Throws with both
43
+ * attempted locations when neither exists.
44
+ *
45
+ * @param ref - Registered asset (pkg + dist-relative path).
46
+ * @param importerUrl - The caller's `import.meta.url`. Required: in the
47
+ * packaged app it points at the bundle root where assets are staged.
48
+ * @param registry - Overridable for tests only.
49
+ */
50
+ export function resolvePackageAssetPath(ref, importerUrl, registry = PACKAGE_RUNTIME_ASSETS) {
51
+ if (!findPackageAsset(ref.pkg, ref.path, registry)) {
52
+ throw new Error(`Package asset ${ref.pkg}/${ref.path} is not registered. Add it to ` +
53
+ `PACKAGE_RUNTIME_ASSETS in @nodetool-ai/config/src/package-asset-registry.ts ` +
54
+ `so the Electron packaging stages and verifies it.`);
55
+ }
56
+ if (!IS_NODE || !nodeModule || !nodeFs || !nodeUrl) {
57
+ throw new Error(`Package asset ${ref.pkg}/${ref.path} requested on a non-Node runtime.`);
58
+ }
59
+ const req = nodeModule.createRequire(importerUrl);
60
+ const specifier = `${ref.pkg}/${ref.path}`;
61
+ try {
62
+ const resolved = req.resolve(specifier);
63
+ record({ pkg: ref.pkg, path: ref.path, resolvedPath: resolved, via: "package" });
64
+ return resolved;
65
+ }
66
+ catch {
67
+ // Not resolvable through package exports — try the flattened layout.
68
+ }
69
+ const candidate = nodeUrl.fileURLToPath(new URL(basenameOf(ref.path), importerUrl));
70
+ if (nodeFs.existsSync(candidate)) {
71
+ record({ pkg: ref.pkg, path: ref.path, resolvedPath: candidate, via: "importer" });
72
+ return candidate;
73
+ }
74
+ const message = `Package asset ${ref.pkg}/${ref.path} not found. Tried package ` +
75
+ `resolution of "${specifier}" and "${candidate}" (relative to the ` +
76
+ `importer). In dev, check the owning package's build copies the file ` +
77
+ `into dist/ and its exports map the subpath. In the packaged app, check ` +
78
+ `scripts/bundle-backend.mjs staged it (verify-backend-bundle ` +
79
+ `should have failed the build).`;
80
+ record({ pkg: ref.pkg, path: ref.path, resolvedPath: null, via: null, error: message });
81
+ log.warn(message);
82
+ throw new Error(message);
83
+ }
84
+ /**
85
+ * Load a registered JSON asset. Loads through `require` rather than an `fs`
86
+ * read: the values flow into provider API requests, and a module load keeps
87
+ * static, trusted data from being modelled as untrusted file input
88
+ * (CodeQL js/file-access-to-http) — and gets caching for free.
89
+ */
90
+ export function loadPackageAssetJson(ref, importerUrl, registry = PACKAGE_RUNTIME_ASSETS) {
91
+ const resolved = resolvePackageAssetPath(ref, importerUrl, registry);
92
+ const req = nodeModule.createRequire(importerUrl);
93
+ // SAFETY: `T` is the shape the caller names for this registered asset;
94
+ // `resolvePackageAssetPath` has already checked the ref against the registry,
95
+ // so what `require` returns is that asset's JSON and nothing else.
96
+ return req(resolved);
97
+ }
98
+ //# sourceMappingURL=package-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-assets.js","sourceRoot":"","sources":["../src/package-assets.ts"],"names":[],"mappings":"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"}
package/dist/paths.d.ts CHANGED
@@ -5,6 +5,10 @@
5
5
  * re-implement OS detection or XDG logic.
6
6
  *
7
7
  * Priority: explicit env var > platform default.
8
+ *
9
+ * The `node:path` / `node:os` / `node:url` imports are loaded lazily via
10
+ * top-level dynamic import so this module loads on non-Node runtimes
11
+ * (browser, Edge). All exported functions throw if invoked off-Node.
8
12
  */
9
13
  /**
10
14
  * Base directory for all Nodetool user data.
@@ -16,7 +20,8 @@
16
20
  * - macOS/Linux: $XDG_DATA_HOME/nodetool (fallback: ~/.local/share/nodetool)
17
21
  */
18
22
  export declare function getNodetoolDataDir(): string;
19
- /** Default path for the main SQLite database. Override with DB_PATH. */
23
+ export declare function getPostgresDatabaseUrl(): string | undefined;
24
+ /** Default path for the main SQLite database. Override with DB_PATH or DATABASE_URL. */
20
25
  export declare function getDefaultDbPath(): string;
21
26
  /** Default path for the vector store database. Override with VECTORSTORE_DB_PATH. */
22
27
  export declare function getDefaultVectorstoreDbPath(): string;
@@ -32,38 +37,62 @@ export declare function getDefaultAssetsPath(): string;
32
37
  */
33
38
  export declare function getDefaultTransformersJsCacheDir(): string;
34
39
  /**
35
- * Public domain for permanent assets (set via ASSET_DOMAIN env var).
40
+ * Per-user cache root for derived artifacts NodeTool can always rebuild.
41
+ *
42
+ * Separate from {@link getNodetoolDataDir} on purpose: everything under here is
43
+ * safe to delete. Override with NODETOOL_CACHE_DIR.
36
44
  *
37
- * When set, asset URLs are built as `https://<domain>/<key>` instead of
38
- * `/api/storage/<key>`. Accepts bare hostnames (`assets.nodetool.ai`) or
39
- * full origins (`https://assets.nodetool.ai`). Returns `undefined` when not
40
- * configured.
45
+ * - Windows: %LOCALAPPDATA%\nodetool\cache
46
+ * - macOS/Linux: $XDG_CACHE_HOME/nodetool (fallback: ~/.cache/nodetool)
47
+ */
48
+ export declare function getNodetoolCacheDir(): string;
49
+ /**
50
+ * Return the absolute filesystem path for a storage key.
51
+ * Use this on the server side for direct file reads.
52
+ */
53
+ export declare function getAssetFilePath(key: string): string;
54
+ /**
55
+ * Build a client-facing URL for a storage key.
56
+ * Returns `/api/storage/<key>` — served by the local HTTP server (file
57
+ * backend) or proxied/redirected to cloud storage by the storage handler.
41
58
  */
42
- export declare function getAssetDomain(): string | undefined;
59
+ export declare function buildAssetUrl(key: string): string;
43
60
  /**
44
- * Public domain for temporary assets (set via TEMP_DOMAIN env var).
61
+ * Root under which NodeTool keeps the workspace folders it manages itself.
45
62
  *
46
- * Applied to keys with the `temp/` prefix. Accepts bare hostnames or full
47
- * origins. Returns `undefined` when not configured, in which case temp URLs
48
- * fall back to `ASSET_DOMAIN` (if set) or the `/api/storage/` path.
63
+ * A managed workspace is the one every user gets without picking a folder, so
64
+ * a chat turn always has somewhere bounded to read and write. It lives under
65
+ * the data dir rather than the cache dir: an agent's outputs are user data, not
66
+ * a derived artifact that is safe to delete. Override with
67
+ * NODETOOL_WORKSPACES_DIR — a server deployment points it at a mounted volume.
49
68
  */
50
- export declare function getTempDomain(): string | undefined;
69
+ export declare function getManagedWorkspacesDir(): string;
51
70
  /**
52
- * Return the absolute filesystem path for a storage key.
71
+ * Storage key prefix of a user's workspace on a deployment that keeps
72
+ * workspaces in object storage rather than on a disk.
53
73
  *
54
- * Use this on the server side whenever you need to read an asset from disk.
55
- * Never pass the result to a browser client — use `buildAssetUrl` for that.
74
+ * The same sanitizing as {@link getManagedWorkspaceDir}: the user id is one
75
+ * key segment, and a `/` or `..` inside it would otherwise reach another
76
+ * user's prefix.
56
77
  */
57
- export declare function getAssetFilePath(key: string): string;
78
+ export declare function managedWorkspaceKey(userId: string): string;
58
79
  /**
59
- * Build a **client-facing** URL for an asset identified by its storage key.
80
+ * Absolute path of a user's managed default workspace.
60
81
  *
61
- * The key is the storage-relative path (e.g. `abc.png` or `temp/uuid.png`).
62
- * When ASSET_DOMAIN / TEMP_DOMAIN are configured, returns an absolute CDN URL.
63
- * Otherwise returns `/api/storage/<key>` — a dev-mode path that the browser
64
- * can reach via the Vite proxy or the local HTTP server.
82
+ * The user id is a path segment, so anything that is not a safe filename
83
+ * character is replaced — a user id from an external identity provider can
84
+ * carry `/`, `:` or `..`, and each of those would escape the workspaces root.
85
+ */
86
+ export declare function getManagedWorkspaceDir(userId: string): string;
87
+ /**
88
+ * Whether this deployment backs workspaces with a local folder or with the
89
+ * object storage it already uses for assets.
65
90
  *
66
- * Do NOT use this for server-side file reads. Use `getAssetFilePath` instead.
91
+ * Production has no durable disk worth writing a user's files to — a Fly
92
+ * machine is replaced and the folder goes with it — so a cloud workspace is a
93
+ * key prefix in the asset bucket. `NODETOOL_WORKSPACE_STORAGE` overrides the
94
+ * default either way, which is how a self-hosted server with a mounted volume
95
+ * keeps local workspaces, and how a local install can be pointed at S3.
67
96
  */
68
- export declare function buildAssetUrl(key: string): string;
97
+ export declare function workspaceStorageKind(): "local" | "cloud";
69
98
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAY3C;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,IAAI,MAAM,CAKpD;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,IAAI,MAAM,CAM7C;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,IAAI,MAAM,CAKzD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAGnD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoBjD"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA0BH;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAa3C;AAqBD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAO3D;AA+CD,wFAAwF;AACxF,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,IAAI,MAAM,CAKpD;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,IAAI,MAAM,CAM7C;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,IAAI,MAAM,CAKzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAe5C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAKhD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE7D;AAOD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,GAAG,OAAO,CAIxD"}