mtech-ai-local-runner 0.1.20 → 0.1.21
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/README.md
CHANGED
|
@@ -10,6 +10,21 @@ The package stores safe runner configuration locally and keeps OAuth refresh cre
|
|
|
10
10
|
|
|
11
11
|
Public npm installation requires no npm account or publishing OTP. Setup requires Gateway OAuth login, and local Claude Code must already be authenticated (`claude auth status`).
|
|
12
12
|
|
|
13
|
+
## 0.1.21: exclude personal history from isolated job startup
|
|
14
|
+
|
|
15
|
+
The job-only Codex wrapper denies reads of the original account's `sessions`
|
|
16
|
+
and `archived_sessions`. A fresh private job database therefore cannot re-index
|
|
17
|
+
unrelated personal rollouts before MCP startup. Existing CLI/login paths,
|
|
18
|
+
personal settings, required authenticated MCP and unlimited admitted employee
|
|
19
|
+
work remain unchanged. Nothing is removed from the original history.
|
|
20
|
+
|
|
21
|
+
Pinned native fake-data comparison verified zero imported personal-history rows
|
|
22
|
+
and successful MCP initialization with this restriction. Real-account no-model
|
|
23
|
+
evidence remains partial because the private collector did not confirm its
|
|
24
|
+
owned exit/cleanup; real model completion is not established. Publication and
|
|
25
|
+
foreground installation do not update the daemon or authorize an execution.
|
|
26
|
+
See [local host comparison](https://bitbucket.org/mtechbal/api-cloud-service-ai-gateway/src/development/docs/ai-ops-gateway/codex-local-host-comparison.md).
|
|
27
|
+
|
|
13
28
|
## 0.1.20: distinguish owned wrapper and target startup
|
|
14
29
|
|
|
15
30
|
Add bounded, read-only process-name/state/wait hints for the exact owned
|
|
@@ -14,12 +14,22 @@ export function accountAncestorPaths(account) {
|
|
|
14
14
|
}
|
|
15
15
|
return Object.freeze(parents);
|
|
16
16
|
}
|
|
17
|
+
/** New job processes must not re-index unrelated interactive history into
|
|
18
|
+
* their fresh private SQLite DB. Login stays at the original account root. */
|
|
19
|
+
export function personalHistoryReadDenial(account) {
|
|
20
|
+
accountAncestorPaths(account);
|
|
21
|
+
return '(deny file-read* ' + ['sessions', 'archived_sessions'].map(name => {
|
|
22
|
+
const root = JSON.stringify(path.join(account, name));
|
|
23
|
+
return `(literal ${root}) (subpath ${root})`;
|
|
24
|
+
}).join(' ') + ')';
|
|
25
|
+
}
|
|
17
26
|
/** Additional per-process denial, not a grant of authority or global policy edit.
|
|
18
27
|
* file-read* is intentional: data-only denial permits a final symlink alias.
|
|
19
28
|
* Ancestor symlink denials prevent a later account-directory redirect. */
|
|
20
29
|
export function globalInstructionProfile(account) {
|
|
21
30
|
const ancestors = accountAncestorPaths(account), literal = (p) => `(literal ${JSON.stringify(p)})`;
|
|
22
31
|
const profile = '(version 1)(allow default)'
|
|
32
|
+
+ personalHistoryReadDenial(account)
|
|
23
33
|
+ '(deny file-read* ' + ['AGENTS.md', 'AGENTS.override.md'].map(name => literal(path.join(account, name))).join(' ') + ')'
|
|
24
34
|
+ '(deny file-read* (require-all (vnode-type SYMLINK) (require-any ' + ancestors.map(literal).join(' ') + ')))';
|
|
25
35
|
if (profile.length > 64000)
|