@jini-ai/platform 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/LICENSE +201 -0
  2. package/dist/asset-cache.d.ts +80 -0
  3. package/dist/asset-cache.d.ts.map +1 -0
  4. package/dist/asset-cache.js +423 -0
  5. package/dist/asset-cache.js.map +1 -0
  6. package/dist/aws-sigv4.d.ts +51 -0
  7. package/dist/aws-sigv4.d.ts.map +1 -0
  8. package/dist/aws-sigv4.js +104 -0
  9. package/dist/aws-sigv4.js.map +1 -0
  10. package/dist/blob-storage.d.ts +89 -0
  11. package/dist/blob-storage.d.ts.map +1 -0
  12. package/dist/blob-storage.js +315 -0
  13. package/dist/blob-storage.js.map +1 -0
  14. package/dist/command.d.ts +32 -0
  15. package/dist/command.d.ts.map +1 -0
  16. package/dist/command.js +101 -0
  17. package/dist/command.js.map +1 -0
  18. package/dist/download.d.ts +92 -0
  19. package/dist/download.d.ts.map +1 -0
  20. package/dist/download.js +856 -0
  21. package/dist/download.js.map +1 -0
  22. package/dist/fs.d.ts +55 -0
  23. package/dist/fs.d.ts.map +1 -0
  24. package/dist/fs.js +124 -0
  25. package/dist/fs.js.map +1 -0
  26. package/dist/home-expansion.d.ts +18 -0
  27. package/dist/home-expansion.d.ts.map +1 -0
  28. package/dist/home-expansion.js +58 -0
  29. package/dist/home-expansion.js.map +1 -0
  30. package/dist/http.d.ts +14 -0
  31. package/dist/http.d.ts.map +1 -0
  32. package/dist/http.js +39 -0
  33. package/dist/http.js.map +1 -0
  34. package/dist/index.d.ts +59 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +45 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/process.d.ts +159 -0
  39. package/dist/process.d.ts.map +1 -0
  40. package/dist/process.js +362 -0
  41. package/dist/process.js.map +1 -0
  42. package/dist/proxy-env.d.ts +50 -0
  43. package/dist/proxy-env.d.ts.map +1 -0
  44. package/dist/proxy-env.js +373 -0
  45. package/dist/proxy-env.js.map +1 -0
  46. package/dist/resource-paths.d.ts +68 -0
  47. package/dist/resource-paths.d.ts.map +1 -0
  48. package/dist/resource-paths.js +137 -0
  49. package/dist/resource-paths.js.map +1 -0
  50. package/dist/sandbox-env.d.ts +86 -0
  51. package/dist/sandbox-env.d.ts.map +1 -0
  52. package/dist/sandbox-env.js +215 -0
  53. package/dist/sandbox-env.js.map +1 -0
  54. package/dist/shell.d.ts +46 -0
  55. package/dist/shell.d.ts.map +1 -0
  56. package/dist/shell.js +78 -0
  57. package/dist/shell.js.map +1 -0
  58. package/dist/terminal.d.ts +137 -0
  59. package/dist/terminal.d.ts.map +1 -0
  60. package/dist/terminal.js +398 -0
  61. package/dist/terminal.js.map +1 -0
  62. package/dist/toolchain.d.ts +17 -0
  63. package/dist/toolchain.d.ts.map +1 -0
  64. package/dist/toolchain.js +251 -0
  65. package/dist/toolchain.js.map +1 -0
  66. package/package.json +47 -0
@@ -0,0 +1,251 @@
1
+ /**
2
+ * @module toolchain
3
+ *
4
+ * User-level toolchain bin discovery. Single source of truth for the CLI
5
+ * install locations a GUI-launched daemon must search even under a stripped
6
+ * PATH — npm/pnpm/bun/cargo/deno/go/pyenv prefixes, version-manager shims
7
+ * (asdf, volta, mise, nvm, fnm), and per-version Node install roots. Pure path
8
+ * assembly plus best-effort directory probing; no process, command, or proxy
9
+ * concerns.
10
+ */
11
+ import { existsSync, readdirSync } from "node:fs";
12
+ import { homedir } from "node:os";
13
+ import { isAbsolute, join } from "node:path";
14
+ /** @internal Resolve a possibly `~`-prefixed or absolute path against `home`, or `null` when it is neither. */
15
+ function resolveUserScopedHome(raw, home) {
16
+ if (typeof raw !== "string")
17
+ return null;
18
+ const value = raw.trim();
19
+ if (value.length === 0)
20
+ return null;
21
+ if (value === "~")
22
+ return home;
23
+ if (value.startsWith("~/") || value.startsWith("~\\")) {
24
+ return join(home, value.slice(2));
25
+ }
26
+ return isAbsolute(value) ? value : null;
27
+ }
28
+ // Single source of truth for "user-level CLI install locations the daemon
29
+ // must search even when launched with a minimal PATH". GUI launchers
30
+ // (macOS .app bundles, Linux .desktop files) typically inherit a stripped
31
+ // PATH from launchd / the desktop session and do not read interactive
32
+ // shell rc files, so without this list any CLI installed under the user's
33
+ // own toolchain (`npm i -g`, `pnpm self-install`, `cargo install`, asdf,
34
+ // nvm, fnm, mise, ...) is silently undetected. Both the daemon resolver
35
+ // and the packaged sidecar PATH builder consume this so the two layers
36
+ // can never drift again.
37
+ /**
38
+ * Assemble the ordered list of user-level toolchain bin directories to prepend
39
+ * to PATH so a GUI-launched daemon can find CLIs installed under the user's own
40
+ * toolchain even when it inherits a stripped PATH. Entries are search-path
41
+ * candidates (existence is not required) except version-manager install roots,
42
+ * which are probed and version-sorted.
43
+ *
44
+ * @param options - Optional `home`, `includeSystemBins`, and `env` overrides (all default to real values).
45
+ * @returns The ordered list of candidate bin directories, most-specific first.
46
+ */
47
+ export function wellKnownUserToolchainBins(options = {}) {
48
+ const home = options.home ?? homedir();
49
+ const includeSystemBins = options.includeSystemBins ?? process.platform !== "win32";
50
+ const env = options.env ?? process.env;
51
+ const dirs = [];
52
+ // Vite+ global installs expose CLI shims from VP_HOME/bin (default
53
+ // ~/.vite-plus/bin). An explicit VP_HOME is the most specific signal for
54
+ // vp-managed shims, so it wins over other global package-manager prefixes
55
+ // when a CLI name exists in multiple stores.
56
+ const vpHome = resolveUserScopedHome(env.VP_HOME, home);
57
+ if (vpHome) {
58
+ dirs.push(join(vpHome, "bin"));
59
+ }
60
+ // The user's *explicit* npm prefix outranks every conventional
61
+ // location below — including `~/.local/bin`. The env var is the
62
+ // user's current npm configuration, so a binary installed via
63
+ // `npm i -g` today lives at `<prefix>/bin`. Conventional locations
64
+ // (`~/.local/bin`, `~/.npm-global`, `~/.npm-packages`) routinely
65
+ // hold *stale* installs from an older prefix the user has since
66
+ // rewritten, and `~/.local/bin` in particular is also a shared
67
+ // dumping ground for pip --user / cargo install / hand-built
68
+ // binaries that may collide with old npm artefacts. Putting the
69
+ // env-driven prefix first matches npm's own resolution order
70
+ // (env > .npmrc > default) and gives "explicit beats convention"
71
+ // semantics across the whole list, not just the npm-prefix block.
72
+ // Trim before length-checking so accidental whitespace-only values
73
+ // (`NPM_CONFIG_PREFIX=" "`) do not produce a `/bin`-suffixed garbage
74
+ // entry.
75
+ const npmPrefixRaw = env.NPM_CONFIG_PREFIX ?? env.npm_config_prefix;
76
+ if (typeof npmPrefixRaw === "string") {
77
+ const npmPrefix = npmPrefixRaw.trim();
78
+ if (npmPrefix.length > 0) {
79
+ // Unix: npm global binaries live in <prefix>/bin. Always add it as a
80
+ // search-path candidate — existence is irrelevant for a PATH directory,
81
+ // and this preserves the long-standing helper contract.
82
+ dirs.push(join(npmPrefix, "bin"));
83
+ // Windows: npm installs global binaries directly into the prefix root
84
+ // (there is no /bin subdirectory), so add the root as well. Additive —
85
+ // the <prefix>/bin entry above is left untouched for cross-platform
86
+ // parity.
87
+ if (process.platform === "win32") {
88
+ dirs.push(npmPrefix);
89
+ }
90
+ }
91
+ }
92
+ // Windows: %APPDATA%\npm is npm's default global prefix. NPM_CONFIG_PREFIX /
93
+ // npm_config_prefix are npm-internal vars that are usually absent in Electron
94
+ // child-process environments, so the block above no-ops for most Windows
95
+ // users. Add the default location unconditionally — consistent with the
96
+ // conventional dirs below, which are also added without an existence check.
97
+ if (process.platform === "win32") {
98
+ dirs.push(join(home, "AppData", "Roaming", "npm"));
99
+ }
100
+ dirs.push(join(home, ".local", "bin"), join(home, ".vite-plus", "bin"), join(home, ".kimi-code", "bin"), join(home, ".opencode", "bin"), join(home, ".bun", "bin"), join(home, ".volta", "bin"), join(home, ".asdf", "shims"), join(home, "Library", "pnpm"), join(home, ".cargo", "bin"),
101
+ // Common user-level npm prefixes for sudo-free global installs.
102
+ // ~/.npm-global is the dominant non-canonical convention shipped
103
+ // in most third-party "fix npm EACCES" tutorials, and
104
+ // ~/.npm-packages is the second-most common variant. Without
105
+ // these, GUI-launched daemons miss `npm i -g`'d CLIs even though
106
+ // they resolve cleanly from the user's shell.
107
+ join(home, ".npm-global", "bin"), join(home, ".npm-packages", "bin"),
108
+ // Other common user-level toolchains that install CLI shims outside the
109
+ // Node ecosystem but still ship agent CLIs (or their dependencies):
110
+ // Deno's install root, Go's default GOBIN, and pyenv's shim dir. All are
111
+ // best-effort — a missing dir contributes nothing.
112
+ join(home, ".deno", "bin"), join(home, "go", "bin"), join(home, ".pyenv", "shims"));
113
+ // Windows-only user install roots that GUI launches miss. Scoop drops
114
+ // shims under ~/scoop/shims, and npm's global prefix on Windows defaults
115
+ // to %APPDATA%\npm rather than a `bin` subdir.
116
+ if (process.platform === "win32") {
117
+ dirs.push(join(home, "scoop", "shims"));
118
+ const appData = typeof env.APPDATA === "string" ? env.APPDATA.trim() : "";
119
+ if (appData.length > 0) {
120
+ dirs.push(join(appData, "npm"));
121
+ }
122
+ }
123
+ // Mise shims: makes every tool installed with `mise install` visible to
124
+ // GUI-launched daemons even when the process inherits a stripped PATH.
125
+ // Respect MISE_DATA_DIR (the official way to relocate the whole mise tree).
126
+ // We only fall back to the legacy ~/.mise/shims path when no explicit
127
+ // MISE_DATA_DIR override is provided.
128
+ const miseDataOverride = resolveUserScopedHome(env.MISE_DATA_DIR, home);
129
+ const miseData = miseDataOverride || join(home, ".local", "share", "mise");
130
+ dirs.push(join(miseData, "shims"));
131
+ if (!miseDataOverride) {
132
+ dirs.push(join(home, ".mise", "shims"));
133
+ }
134
+ if (includeSystemBins) {
135
+ dirs.push("/opt/homebrew/bin", "/usr/local/bin");
136
+ }
137
+ // Per-version Node toolchains: scan the install root and surface every
138
+ // version directory's bin folder. Best-effort — missing roots simply
139
+ // contribute nothing.
140
+ // When MISE_DATA_DIR is set we use the same root for consistency with shims.
141
+ const miseInstalls = join(miseData, "installs");
142
+ dirs.push(...existingMiseNpmPackageBinDirs(miseInstalls));
143
+ const nodeInstallRoots = [
144
+ {
145
+ root: join(miseInstalls, "node"),
146
+ segments: ["bin"],
147
+ },
148
+ {
149
+ root: join(home, ".nvm", "versions", "node"),
150
+ segments: ["bin"],
151
+ },
152
+ {
153
+ root: join(home, ".local", "share", "fnm", "node-versions"),
154
+ segments: ["installation", "bin"],
155
+ },
156
+ {
157
+ root: join(home, ".fnm", "node-versions"),
158
+ segments: ["installation", "bin"],
159
+ },
160
+ ];
161
+ // Windows fnm keeps Node installs under <fnm-root>\node-versions\<ver>\
162
+ // installation, with node.exe — and any `npm i -g`'d CLI shim such as
163
+ // codex.cmd — directly in `installation` (no POSIX-style `bin` subdir).
164
+ // The fnm root is %APPDATA%\fnm or %LOCALAPPDATA%\fnm depending on the
165
+ // install, and `FNM_DIR` overrides both. A GUI-launched packaged app
166
+ // inherits a stripped PATH and reads no shell rc, so without an explicit
167
+ // probe fnm-managed Node — and every agent CLI it runs — is silently
168
+ // undetected on Windows. See issues #3517 and #3062.
169
+ if (process.platform === "win32") {
170
+ const fnmDirOverride = typeof env.FNM_DIR === "string" ? env.FNM_DIR.trim() : "";
171
+ const fnmRoots = [];
172
+ if (fnmDirOverride.length > 0) {
173
+ fnmRoots.push(fnmDirOverride);
174
+ }
175
+ else {
176
+ for (const base of [env.LOCALAPPDATA, env.APPDATA]) {
177
+ const trimmed = typeof base === "string" ? base.trim() : "";
178
+ if (trimmed.length > 0)
179
+ fnmRoots.push(join(trimmed, "fnm"));
180
+ }
181
+ }
182
+ for (const fnmRoot of fnmRoots) {
183
+ nodeInstallRoots.push({ root: join(fnmRoot, "node-versions"), segments: ["installation"] });
184
+ }
185
+ }
186
+ for (const installRoot of nodeInstallRoots) {
187
+ for (const dir of existingChildBinDirs(installRoot.root, installRoot.segments)) {
188
+ dirs.push(dir);
189
+ }
190
+ }
191
+ return dirs;
192
+ }
193
+ /** @internal Surface bin dirs for npm-packaged toolchains installed under a mise installs root (e.g. `npm-openai-codex`). */
194
+ function existingMiseNpmPackageBinDirs(root) {
195
+ const out = [];
196
+ for (const packageName of ["npm-openai-codex"]) {
197
+ const packageRoot = join(root, packageName);
198
+ out.push(...existingChildBinDirs(packageRoot, ["bin"]));
199
+ }
200
+ return out;
201
+ }
202
+ /** @internal List existing `<root>/<versionDir>/<...segments>` directories, version-sorted, skipping non-directories. */
203
+ function existingChildBinDirs(root, segments) {
204
+ const out = [];
205
+ let entries;
206
+ try {
207
+ entries = readdirSync(root, { encoding: "utf8", withFileTypes: true });
208
+ }
209
+ catch {
210
+ return out;
211
+ }
212
+ for (const entry of sortVersionedDirEntries(entries)) {
213
+ if (!entry.isDirectory() && !entry.isSymbolicLink())
214
+ continue;
215
+ const candidate = join(root, entry.name, ...segments);
216
+ if (existsSync(candidate))
217
+ out.push(candidate);
218
+ }
219
+ return out;
220
+ }
221
+ /** @internal Sort directory entries by semver-like name (newest first), falling back to locale order. */
222
+ function sortVersionedDirEntries(entries) {
223
+ return [...entries].sort((left, right) => compareVersionLikeDirNames(left.name, right.name));
224
+ }
225
+ /** @internal Compare two version-like directory names descending; semver-parseable names precede non-parseable ones. */
226
+ function compareVersionLikeDirNames(left, right) {
227
+ const leftSemver = parseVersionLikeDirName(left);
228
+ const rightSemver = parseVersionLikeDirName(right);
229
+ if (leftSemver && rightSemver) {
230
+ for (let index = 0; index < leftSemver.length; index += 1) {
231
+ const difference = rightSemver[index] - leftSemver[index];
232
+ if (difference !== 0)
233
+ return difference;
234
+ }
235
+ }
236
+ else if (leftSemver) {
237
+ return -1;
238
+ }
239
+ else if (rightSemver) {
240
+ return 1;
241
+ }
242
+ return left.localeCompare(right);
243
+ }
244
+ /** @internal Parse a `vX.Y.Z` / `X.Y.Z` directory name into its numeric parts, or `null` when it does not match. */
245
+ function parseVersionLikeDirName(name) {
246
+ const match = /^v?(\d+)\.(\d+)\.(\d+)$/.exec(name);
247
+ if (!match)
248
+ return null;
249
+ return [Number(match[1]), Number(match[2]), Number(match[3])];
250
+ }
251
+ //# sourceMappingURL=toolchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolchain.js","sourceRoot":"","sources":["../src/toolchain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAkB7C,+GAA+G;AAC/G,SAAS,qBAAqB,CAAC,GAAuB,EAAE,IAAY;IAClE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED,0EAA0E;AAC1E,qEAAqE;AACrE,0EAA0E;AAC1E,sEAAsE;AACtE,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,uEAAuE;AACvE,yBAAyB;AACzB;;;;;;;;;GASG;AACH,MAAM,UAAU,0BAA0B,CACxC,UAAyC,EAAE;IAE3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;IACvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IACpF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,mEAAmE;IACnE,yEAAyE;IACzE,0EAA0E;IAC1E,6CAA6C;IAC7C,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,+DAA+D;IAC/D,gEAAgE;IAChE,8DAA8D;IAC9D,mEAAmE;IACnE,iEAAiE;IACjE,gEAAgE;IAChE,+DAA+D;IAC/D,6DAA6D;IAC7D,gEAAgE;IAChE,6DAA6D;IAC7D,iEAAiE;IACjE,kEAAkE;IAClE,mEAAmE;IACnE,qEAAqE;IACrE,SAAS;IACT,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,CAAC;IACpE,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,qEAAqE;YACrE,wEAAwE;YACxE,wDAAwD;YACxD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YAClC,sEAAsE;YACtE,uEAAuE;YACvE,oEAAoE;YACpE,UAAU;YACV,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,wEAAwE;IACxE,4EAA4E;IAC5E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC3B,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,EAC/B,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,EAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EACzB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC3B,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAC7B,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IAC3B,gEAAgE;IAChE,iEAAiE;IACjE,sDAAsD;IACtD,6DAA6D;IAC7D,iEAAiE;IACjE,8CAA8C;IAC9C,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,EAChC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC;IAClC,wEAAwE;IACxE,oEAAoE;IACpE,yEAAyE;IACzE,mDAAmD;IACnD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAC1B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EACvB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAC9B,CAAC;IAEF,sEAAsE;IACtE,yEAAyE;IACzE,+CAA+C;IAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,uEAAuE;IACvE,4EAA4E;IAC5E,sEAAsE;IACtE,sCAAsC;IACtC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,gBAAgB,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;IACnD,CAAC;IACD,uEAAuE;IACvE,qEAAqE;IACrE,sBAAsB;IACtB,6EAA6E;IAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,CAAC,GAAG,6BAA6B,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAgD;QACpE;YACE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;YAChC,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB;QACD;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;YAC5C,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB;QACD;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC;YAC3D,QAAQ,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC;SAClC;QACD;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC;YACzC,QAAQ,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC;SAClC;KACF,CAAC;IACF,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,uEAAuE;IACvE,qEAAqE;IACrE,yEAAyE;IACzE,qEAAqE;IACrE,qDAAqD;IACrD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,KAAK,MAAM,WAAW,IAAI,gBAAgB,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,oBAAoB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6HAA6H;AAC7H,SAAS,6BAA6B,CAAC,IAAY;IACjD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,WAAW,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yHAAyH;AACzH,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAkB;IAC5D,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,OAA2C,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAAE,SAAS;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAID,yGAAyG;AACzG,SAAS,uBAAuB,CAAC,OAA2C;IAC1E,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,wHAAwH;AACxH,SAAS,0BAA0B,CAAC,IAAY,EAAE,KAAa;IAC7D,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAE,GAAG,UAAU,CAAC,KAAK,CAAE,CAAC;YAC5D,IAAI,UAAU,KAAK,CAAC;gBAAE,OAAO,UAAU,CAAC;QAC1C,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,oHAAoH;AACpH,SAAS,uBAAuB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@jini-ai/platform",
3
+ "version": "0.1.0",
4
+ "license": "Apache-2.0",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/AINSEP/Jini.git",
8
+ "directory": "packages/platform"
9
+ },
10
+ "jini": {
11
+ "domain": "platform",
12
+ "kind": "abstraction",
13
+ "runtime": "node",
14
+ "admission": "locked"
15
+ },
16
+ "type": "module",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js"
21
+ }
22
+ },
23
+ "files": [
24
+ "dist",
25
+ "!dist/**/*.test.js",
26
+ "!dist/**/*.test.d.ts",
27
+ "!dist/**/*.test.js.map",
28
+ "!dist/**/*.test.d.ts.map",
29
+ "!dist/**/__tests__/**"
30
+ ],
31
+ "dependencies": {
32
+ "undici": "^7.25.0"
33
+ },
34
+ "publishConfig": {
35
+ "access": "public",
36
+ "registry": "https://registry.npmjs.org"
37
+ },
38
+ "devDependencies": {
39
+ "@vitest/coverage-v8": "^2.1.9"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.json",
43
+ "typecheck": "tsc -p tsconfig.json --noEmit",
44
+ "test": "vitest run",
45
+ "test:coverage": "vitest run --coverage"
46
+ }
47
+ }