@intentic/scaffold 1.230.3 → 1.232.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.
- package/dist/exec.d.ts +8 -0
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +101 -12
- package/dist/exec.js.map +1 -1
- package/dist/git-forker.d.ts +1 -0
- package/dist/git-forker.d.ts.map +1 -1
- package/dist/git-forker.js +2 -0
- package/dist/git-forker.js.map +1 -1
- package/package.json +6 -6
package/dist/exec.d.ts
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
2
|
export declare const exec: typeof execFile.__promisify__;
|
|
3
3
|
export declare const GIT_GLOBAL_ARGS: readonly ["--no-optional-locks", "-c", "core.fileMode=false"];
|
|
4
|
+
export declare const literalPathspecs: (args: readonly string[]) => readonly string[];
|
|
4
5
|
export type GitRunner = (dir: string, args: readonly string[], env?: Readonly<Record<string, string>>) => Promise<{
|
|
5
6
|
readonly stdout: string;
|
|
6
7
|
readonly stderr: string;
|
|
7
8
|
}>;
|
|
8
9
|
export declare const gitBytes: (dir: string, args: readonly string[], maxBytes: number) => Promise<Buffer>;
|
|
10
|
+
export declare const gitSpawnStats: () => {
|
|
11
|
+
readonly activeBulk: number;
|
|
12
|
+
readonly queuedBulk: number;
|
|
13
|
+
readonly bulkSlots: number;
|
|
14
|
+
};
|
|
9
15
|
export interface GitObservation {
|
|
10
16
|
readonly dir: string;
|
|
11
17
|
readonly args: readonly string[];
|
|
12
18
|
readonly ms: number;
|
|
19
|
+
readonly execMs: number;
|
|
13
20
|
readonly attempts: number;
|
|
14
21
|
readonly failed: boolean;
|
|
15
22
|
readonly forked: boolean;
|
|
23
|
+
readonly queueDepth: number;
|
|
16
24
|
}
|
|
17
25
|
export declare const observeGitCommands: (observer: (observation: GitObservation) => void) => void;
|
|
18
26
|
export declare const defaultGit: GitRunner;
|
package/dist/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAQ,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAQ,MAAM,oBAAoB,CAAC;AAQvE,eAAO,MAAM,IAAI,+BAAsB,CAAC;AAcxC,eAAO,MAAM,eAAe,YAAI,qBAAqB,EAAE,IAAI,EAAE,qBAAqB,CAAU,CAAC;AA2B7F,eAAO,MAAM,gBAAgB,SAAU,SAAS,MAAM,EAAE,KAAG,SAAS,MAAM,EAMzE,CAAC;AAgCF,MAAM,MAAM,SAAS,GAAG,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACrC,OAAO,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAWnE,eAAO,MAAM,QAAQ,QAAe,MAAM,QAAQ,SAAS,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,CAGrG,CAAC;AAmMF,eAAO,MAAM,aAAa,QAAO;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAIrH,CAAC;AA6EH,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAUpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAMD,eAAO,MAAM,kBAAkB,aAAc,CAAC,WAAW,EAAE,cAAc,KAAK,IAAI,KAAG,IAEpF,CAAC;AAgDF,eAAO,MAAM,UAAU,EAAE,SAAwC,CAAC;AAelE,eAAO,MAAM,SAAS,EAAE,SASvB,CAAC"}
|
package/dist/exec.js
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import { execFile, fork } from "node:child_process";
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
|
+
import { availableParallelism } from "node:os";
|
|
3
4
|
import { promisify } from "node:util";
|
|
4
5
|
export const exec = promisify(execFile);
|
|
5
6
|
export const GIT_GLOBAL_ARGS = ["--no-optional-locks", "-c", "core.fileMode=false"];
|
|
7
|
+
const PLUMBING_PATHS = new Set(["update-index", "hash-object", "check-ignore", "check-attr"]);
|
|
8
|
+
export const literalPathspecs = (args) => {
|
|
9
|
+
const separator = args.lastIndexOf("--");
|
|
10
|
+
if (separator === -1 || separator === args.length - 1 || PLUMBING_PATHS.has(subcommandOf(args) ?? "")) {
|
|
11
|
+
return args;
|
|
12
|
+
}
|
|
13
|
+
return [...args.slice(0, separator + 1), ...args.slice(separator + 1).map((path) => `:(literal)${path}`)];
|
|
14
|
+
};
|
|
6
15
|
const MAX_GIT_OUTPUT = 16 * 1024 * 1024;
|
|
7
16
|
const LOCK_CONTENTION = /index\.lock.*File exists|Unable to create.*\.lock/i;
|
|
8
17
|
const RETRY_ATTEMPTS = 6;
|
|
@@ -11,7 +20,7 @@ const isLockContention = (error) => {
|
|
|
11
20
|
return typeof stderr === "string" && LOCK_CONTENTION.test(stderr);
|
|
12
21
|
};
|
|
13
22
|
export const gitBytes = async (dir, args, maxBytes) => {
|
|
14
|
-
const { stdout } = await exec("git", [...GIT_GLOBAL_ARGS, "-C", dir, ...args], { maxBuffer: maxBytes, encoding: "buffer" });
|
|
23
|
+
const { stdout } = await exec("git", [...GIT_GLOBAL_ARGS, "-C", dir, ...literalPathspecs(args)], { maxBuffer: maxBytes, encoding: "buffer" });
|
|
15
24
|
return stdout;
|
|
16
25
|
};
|
|
17
26
|
const inFlight = new Map();
|
|
@@ -28,7 +37,12 @@ const forkerFailure = (response, failure) => Object.assign(new Error(failure.mes
|
|
|
28
37
|
...(failure.code !== undefined ? { code: failure.code } : {}),
|
|
29
38
|
stdout: response.stdout,
|
|
30
39
|
stderr: response.stderr,
|
|
40
|
+
execMs: response.execMs,
|
|
31
41
|
});
|
|
42
|
+
const failedExecMs = (error) => {
|
|
43
|
+
const reported = error.execMs;
|
|
44
|
+
return typeof reported === "number" ? reported : 0;
|
|
45
|
+
};
|
|
32
46
|
const forkerModule = new URL("./git-forker.js", import.meta.url);
|
|
33
47
|
const gitForker = () => {
|
|
34
48
|
if (forker !== undefined || forkerUnavailable) {
|
|
@@ -50,7 +64,7 @@ const gitForker = () => {
|
|
|
50
64
|
waiting.reject(forkerFailure(response, response.failure));
|
|
51
65
|
return;
|
|
52
66
|
}
|
|
53
|
-
waiting.resolve({ stdout: response.stdout, stderr: response.stderr });
|
|
67
|
+
waiting.resolve({ stdout: response.stdout, stderr: response.stderr, execMs: response.execMs });
|
|
54
68
|
});
|
|
55
69
|
started.on("exit", () => {
|
|
56
70
|
forker = undefined;
|
|
@@ -68,16 +82,64 @@ const gitForker = () => {
|
|
|
68
82
|
forker = started;
|
|
69
83
|
return forker;
|
|
70
84
|
};
|
|
71
|
-
const
|
|
85
|
+
const BULK_SLOTS = Math.max(2, Math.floor(availableParallelism() / 4));
|
|
86
|
+
const UNBOUNDED = new Set(["push", "fetch", "pull", "clone", "ls-remote", "submodule"]);
|
|
87
|
+
const subcommandOf = (args) => {
|
|
88
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
89
|
+
const arg = args[index];
|
|
90
|
+
if (arg === "-c" || arg === "-C") {
|
|
91
|
+
index += 1;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (!arg.startsWith("-")) {
|
|
95
|
+
return arg;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
};
|
|
100
|
+
let activeBulk = 0;
|
|
101
|
+
const waitingBulk = [];
|
|
102
|
+
const acquireBulk = () => {
|
|
103
|
+
if (activeBulk < BULK_SLOTS) {
|
|
104
|
+
activeBulk += 1;
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
return new Promise((resolve) => waitingBulk.push(resolve));
|
|
108
|
+
};
|
|
109
|
+
const releaseBulk = () => {
|
|
110
|
+
activeBulk -= 1;
|
|
111
|
+
const next = waitingBulk.shift();
|
|
112
|
+
if (next === undefined) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
activeBulk += 1;
|
|
116
|
+
next();
|
|
117
|
+
};
|
|
118
|
+
export const gitSpawnStats = () => ({
|
|
119
|
+
activeBulk,
|
|
120
|
+
queuedBulk: waitingBulk.length,
|
|
121
|
+
bulkSlots: BULK_SLOTS,
|
|
122
|
+
});
|
|
123
|
+
const runGit = async (command, args, env) => {
|
|
72
124
|
const resolved = env === undefined ? undefined : { ...process.env, ...env };
|
|
73
125
|
const channel = gitForker();
|
|
74
126
|
if (channel === undefined) {
|
|
75
|
-
|
|
127
|
+
const from = process.hrtime.bigint();
|
|
128
|
+
try {
|
|
129
|
+
const output = await exec(command, [...args], { maxBuffer: MAX_GIT_OUTPUT, ...(resolved !== undefined ? { env: resolved } : {}) });
|
|
130
|
+
return { ...output, execMs: Number(process.hrtime.bigint() - from) / 1e6 };
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
if (typeof error === "object" && error !== null) {
|
|
134
|
+
Object.assign(error, { execMs: Number(process.hrtime.bigint() - from) / 1e6 });
|
|
135
|
+
}
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
76
138
|
}
|
|
77
139
|
const id = nextRequestId;
|
|
78
140
|
nextRequestId += 1;
|
|
79
141
|
const request = { id, command, args, maxBuffer: MAX_GIT_OUTPUT, ...(resolved !== undefined ? { env: resolved } : {}) };
|
|
80
|
-
return new Promise((resolve, reject) => {
|
|
142
|
+
return await new Promise((resolve, reject) => {
|
|
81
143
|
inFlight.set(id, { resolve, reject });
|
|
82
144
|
channel.channel?.ref();
|
|
83
145
|
channel.send(request, (error) => {
|
|
@@ -88,23 +150,48 @@ const runGit = (command, args, env) => {
|
|
|
88
150
|
});
|
|
89
151
|
});
|
|
90
152
|
};
|
|
153
|
+
const runGitSlotted = async (command, args, env, bulk, unbounded) => {
|
|
154
|
+
if (!bulk || unbounded) {
|
|
155
|
+
return await runGit(command, args, env);
|
|
156
|
+
}
|
|
157
|
+
await acquireBulk();
|
|
158
|
+
try {
|
|
159
|
+
return await runGit(command, args, env);
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
releaseBulk();
|
|
163
|
+
}
|
|
164
|
+
};
|
|
91
165
|
let gitObserver;
|
|
92
166
|
export const observeGitCommands = (observer) => {
|
|
93
167
|
gitObserver = observer;
|
|
94
168
|
};
|
|
95
|
-
const gitRunnerVia = (argv) => async (dir, args, env) => {
|
|
169
|
+
const gitRunnerVia = (argv, bulk) => async (dir, args, env) => {
|
|
96
170
|
const [command, ...rest] = argv;
|
|
171
|
+
const unbounded = UNBOUNDED.has(subcommandOf(args) ?? "");
|
|
97
172
|
const from = process.hrtime.bigint();
|
|
173
|
+
let execMs = 0;
|
|
98
174
|
const observe = (attempts, failed) => {
|
|
99
|
-
gitObserver?.({
|
|
175
|
+
gitObserver?.({
|
|
176
|
+
dir,
|
|
177
|
+
args,
|
|
178
|
+
ms: Number(process.hrtime.bigint() - from) / 1e6,
|
|
179
|
+
execMs,
|
|
180
|
+
attempts,
|
|
181
|
+
failed,
|
|
182
|
+
forked: forker !== undefined,
|
|
183
|
+
queueDepth: waitingBulk.length,
|
|
184
|
+
});
|
|
100
185
|
};
|
|
101
186
|
for (let attempt = 1;; attempt += 1) {
|
|
102
187
|
try {
|
|
103
|
-
const output = await
|
|
188
|
+
const output = await runGitSlotted(command, [...rest, ...GIT_GLOBAL_ARGS, "-C", dir, ...literalPathspecs(args)], env, bulk, unbounded);
|
|
189
|
+
execMs += output.execMs;
|
|
104
190
|
observe(attempt, false);
|
|
105
|
-
return output;
|
|
191
|
+
return { stdout: output.stdout, stderr: output.stderr };
|
|
106
192
|
}
|
|
107
193
|
catch (error) {
|
|
194
|
+
execMs += failedExecMs(error);
|
|
108
195
|
if (attempt >= RETRY_ATTEMPTS || !isLockContention(error)) {
|
|
109
196
|
observe(attempt, true);
|
|
110
197
|
throw error;
|
|
@@ -113,14 +200,16 @@ const gitRunnerVia = (argv) => async (dir, args, env) => {
|
|
|
113
200
|
}
|
|
114
201
|
}
|
|
115
202
|
};
|
|
116
|
-
export const defaultGit = gitRunnerVia(["git"]);
|
|
203
|
+
export const defaultGit = gitRunnerVia(["git"], false);
|
|
204
|
+
const nicedGit = gitRunnerVia(["nice", "-n", "10", "ionice", "-c", "2", "-n", "7", "git"], true);
|
|
205
|
+
const plainBulkGit = gitRunnerVia(["git"], true);
|
|
117
206
|
export const politeGit = async (dir, args, env) => {
|
|
118
207
|
try {
|
|
119
|
-
return await
|
|
208
|
+
return await nicedGit(dir, args, env);
|
|
120
209
|
}
|
|
121
210
|
catch (error) {
|
|
122
211
|
if (error.code === "ENOENT") {
|
|
123
|
-
return
|
|
212
|
+
return await plainBulkGit(dir, args, env);
|
|
124
213
|
}
|
|
125
214
|
throw error;
|
|
126
215
|
}
|
package/dist/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAKtC,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAcxC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,qBAAqB,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"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"}
|
package/dist/git-forker.d.ts
CHANGED
package/dist/git-forker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-forker.d.ts","sourceRoot":"","sources":["../src/git-forker.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAI3B,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAC/D;AAKD,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACpF"}
|
|
1
|
+
{"version":3,"file":"git-forker.d.ts","sourceRoot":"","sources":["../src/git-forker.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAI3B,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAC/D;AAKD,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAaxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACpF"}
|
package/dist/git-forker.js
CHANGED
|
@@ -4,11 +4,13 @@ if (send === undefined) {
|
|
|
4
4
|
throw new Error("git forker started without an IPC channel");
|
|
5
5
|
}
|
|
6
6
|
process.on("message", (request) => {
|
|
7
|
+
const from = process.hrtime.bigint();
|
|
7
8
|
execFile(request.command, [...request.args], { maxBuffer: request.maxBuffer, ...(request.env !== undefined ? { env: request.env } : {}) }, (error, stdout, stderr) => {
|
|
8
9
|
const response = {
|
|
9
10
|
id: request.id,
|
|
10
11
|
stdout,
|
|
11
12
|
stderr,
|
|
13
|
+
execMs: Number(process.hrtime.bigint() - from) / 1e6,
|
|
12
14
|
...(error === null
|
|
13
15
|
? {}
|
|
14
16
|
: {
|
package/dist/git-forker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-forker.js","sourceRoot":"","sources":["../src/git-forker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"git-forker.js","sourceRoot":"","sources":["../src/git-forker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA6C9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;IACrB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AACjE,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAoB,EAAE,EAAE;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACrC,QAAQ,CACJ,OAAO,CAAC,OAAO,EACf,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,EACjB,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAC5F,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAiB;YAC3B,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,MAAM;YACN,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG;YAGpD,GAAG,CAAC,KAAK,KAAK,IAAI;gBACd,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACI,OAAO,EAAE;wBACL,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnF;iBACJ,CAAC;SACX,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC,CACJ,CAAC;AACN,CAAC,CAAC,CAAC;AAGH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentic/scaffold",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.232.0",
|
|
4
4
|
"description": "Shared scaffold for an intentic workspace, the intent-repo skeleton + deploy.config managed-region render/parse, used by the CLI's `init` and the sandbox daemon",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -31,16 +31,16 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"tslib": "2.8.1",
|
|
34
|
-
"@intentic/constants": "1.
|
|
35
|
-
"@intentic/graph": "1.
|
|
36
|
-
"@intentic/sandbox-contract": "1.
|
|
34
|
+
"@intentic/constants": "1.232.0",
|
|
35
|
+
"@intentic/graph": "1.232.0",
|
|
36
|
+
"@intentic/sandbox-contract": "1.232.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "24.13.2",
|
|
40
40
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
41
41
|
"vitest": "4.1.10",
|
|
42
|
-
"@intentic/
|
|
43
|
-
"@intentic/
|
|
42
|
+
"@intentic/tsconfig": "0.0.0",
|
|
43
|
+
"@intentic/testing": "0.0.0"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "tsgo",
|