@tiangong-ai/cli 0.0.46 → 0.0.48
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/AGENTS.md +2 -2
- package/README.md +23 -5
- package/dist/research/workspace/broker.js +1 -2
- package/dist/research/workspace/broker.js.map +1 -1
- package/dist/research/workspace/executor.js +120 -8
- package/dist/research/workspace/executor.js.map +1 -1
- package/dist/research/workspace/preflight.d.ts +1 -1
- package/dist/research/workspace/runtime.js +9 -1
- package/dist/research/workspace/runtime.js.map +1 -1
- package/dist/research/workspace/sanitization.js +2 -2
- package/dist/research/workspace/sanitization.js.map +1 -1
- package/dist/research/workspace/setup.js +36 -35
- package/dist/research/workspace/setup.js.map +1 -1
- package/dist/research/workspace/storage.d.ts +24 -1
- package/dist/research/workspace/storage.js +400 -7
- package/dist/research/workspace/storage.js.map +1 -1
- package/dist/research/workspace/workspace.js +17 -2
- package/dist/research/workspace/workspace.js.map +1 -1
- package/package.json +3 -1
|
@@ -28,9 +28,9 @@ export function sanitizeResearchText(value, secrets = []) {
|
|
|
28
28
|
}
|
|
29
29
|
sanitized = sanitized
|
|
30
30
|
.replace(/(["']?(?:access[_-]?token|api[_-]?key|apikey|auth|authorization|cookie|credential|password|secret|session(?:[_-]?id)?|token)["']?\s*:\s*["'])([^"']*)(["'])/gi, "$1[REDACTED]$3")
|
|
31
|
-
.replace(/\b(Bearer|Basic)\s+[
|
|
31
|
+
.replace(/\b((?:proxy-)?authorization)\s*:\s*((?:Bearer|Basic)\s+)?[^\s,;}"'<>\\]+/gi, "$1: $2[REDACTED]")
|
|
32
32
|
.replace(/\b(access_token|api[_-]?key|apikey|auth|authorization|cookie|password|secret|session|token)\s*=\s*[^\s,;}&"'<>\\]+/gi, "$1=[REDACTED]")
|
|
33
|
-
.replace(/\b(
|
|
33
|
+
.replace(/\b(cookie|set-cookie|x-api-key|api-key)\s*:\s*[^\s,;}"'<>\\]+/gi, "$1: [REDACTED]");
|
|
34
34
|
return sanitizeUrls(sanitized);
|
|
35
35
|
}
|
|
36
36
|
export function configuredResearchSecrets(source) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitization.js","sourceRoot":"","sources":["../../../src/research/workspace/sanitization.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GACjB,4JAA4J,CAAC;AAC/J,MAAM,mBAAmB,GACvB,wPAAwP,CAAC;AAC3P,MAAM,sBAAsB,GAC1B,2JAA2J,CAAC;AAE9J,MAAM,UAAU,qBAAqB,CAAC,KAAc,EAAE,UAA6B,EAAE;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC3E,SAAS,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YACtC,CAAC,CAAC,IAAI,KAAK,IAAI;gBACb,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,YAAY;YAChB,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAA8B,EAC9B,UAA6B,EAAE;IAE/B,OAAO,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAA4B,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,UAA6B,EAAE;IACjF,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACxF,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;IACD,SAAS,GAAG,SAAS;SAClB,OAAO,CACN,+JAA+J,EAC/J,gBAAgB,CACjB;SACA,OAAO,
|
|
1
|
+
{"version":3,"file":"sanitization.js","sourceRoot":"","sources":["../../../src/research/workspace/sanitization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1702,47 +1702,48 @@ export async function checkResearchSetupUpdates(workspace, environment = process
|
|
|
1702
1702
|
export async function clearStaleSetupLock(workspace) {
|
|
1703
1703
|
const root = requireAbsoluteWorkspace(resolve(workspace));
|
|
1704
1704
|
const lockPath = workspacePaths(root).setupLock;
|
|
1705
|
-
|
|
1706
|
-
if (!info)
|
|
1707
|
-
return;
|
|
1708
|
-
if (!info.isFile() || info.isSymbolicLink()) {
|
|
1709
|
-
throw setupError({
|
|
1710
|
-
code: "RESEARCH_SETUP_LOCK_INVALID",
|
|
1711
|
-
step: "retry",
|
|
1712
|
-
reason: "Setup lock is not a regular file.",
|
|
1713
|
-
minimumAction: "Inspect the lock path manually; it will not be removed automatically.",
|
|
1714
|
-
retryCommand: `tiangong-ai research setup status --workspace ${root} --json`,
|
|
1715
|
-
exitCode: 3,
|
|
1716
|
-
});
|
|
1717
|
-
}
|
|
1718
|
-
let payload;
|
|
1705
|
+
let release;
|
|
1719
1706
|
try {
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1707
|
+
release = await acquireFileLock(lockPath, {
|
|
1708
|
+
operation: "research.setup.lock-recovery",
|
|
1709
|
+
acquiredAt: new Date().toISOString(),
|
|
1710
|
+
});
|
|
1724
1711
|
}
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1712
|
+
catch (error) {
|
|
1713
|
+
if (error instanceof CliError && error.code === "RESEARCH_WORKSPACE_LOCKED") {
|
|
1714
|
+
const details = isObject(error.details) ? error.details : {};
|
|
1715
|
+
if (details.ownerState === "alive") {
|
|
1716
|
+
throw new CliError("Setup is already running in another live process.", {
|
|
1717
|
+
code: "RESEARCH_SETUP_LOCK_ACTIVE",
|
|
1718
|
+
exitCode: 3,
|
|
1719
|
+
details: {
|
|
1720
|
+
ownerState: "alive",
|
|
1721
|
+
operation: typeof details.operation === "string" ? details.operation : null,
|
|
1722
|
+
acquiredAt: typeof details.acquiredAt === "string" ? details.acquiredAt : null,
|
|
1723
|
+
minimumAction: "Wait for the active setup operation to finish, then retry; do not delete lock state manually.",
|
|
1724
|
+
},
|
|
1725
|
+
});
|
|
1726
|
+
}
|
|
1727
|
+
throw new CliError("Setup lock ownership cannot yet be verified safely.", {
|
|
1728
|
+
code: "RESEARCH_SETUP_LOCK_UNVERIFIABLE",
|
|
1734
1729
|
exitCode: 3,
|
|
1730
|
+
details: {
|
|
1731
|
+
ownerState: "unknown",
|
|
1732
|
+
retryAfterSeconds: typeof details.retryAfterSeconds === "number" ? details.retryAfterSeconds : null,
|
|
1733
|
+
minimumAction: "Wait for the reported lease interval and retry; do not delete lock state manually.",
|
|
1734
|
+
},
|
|
1735
1735
|
});
|
|
1736
1736
|
}
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1737
|
+
throw new CliError("Setup lock state is unreadable or unsafe.", {
|
|
1738
|
+
code: "RESEARCH_SETUP_LOCK_INVALID",
|
|
1739
|
+
exitCode: 3,
|
|
1740
|
+
details: {
|
|
1741
|
+
ownerState: "unknown",
|
|
1742
|
+
minimumAction: "Inspect workspace filesystem permissions and lock-state integrity; do not delete lock state manually.",
|
|
1743
|
+
},
|
|
1744
|
+
});
|
|
1744
1745
|
}
|
|
1745
|
-
await
|
|
1746
|
+
await release();
|
|
1746
1747
|
}
|
|
1747
1748
|
function parseResearchSetupPlan(value) {
|
|
1748
1749
|
if (!isObject(value) ||
|