@archmax-ai/harness 0.7.0 → 0.7.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.
@@ -74,7 +74,10 @@ The calling state must allow every tool the script calls (here
74
74
  `archmax_workflow_enrich-order`). A script's `tools` lists exactly the calling
75
75
  state's tools, re-scoped at every evaluation (so after an advance the same REPL
76
76
  lists the next state's); a tool the state does not offer is unlisted, and
77
- calling it by name is refused with governance's reason.
77
+ calling it by name is refused with governance's reason. The listing is
78
+ camelCased, but a tool's own name reaches the same function
79
+ (`tools["archmax_workflow_enrich-order"]`, `tools.read_file`); a hook's `tools`
80
+ takes the camelCased names alone.
78
81
 
79
82
  **Return into a variable.** A script's result reaches the model as one tool
80
83
  message and no further — it is not written to the variable store, and a script
@@ -27,9 +27,18 @@ function sandboxContext(params) {
27
27
  const argsAssignment = (args) => `globalThis.args = ${JSON.stringify(args ?? {})};`;
28
28
  /**
29
29
  * The line that scopes `tools` to a surface, after the `ptc` prelude installed
30
- * the view: named the way the session keys its injected tools, so the two match.
30
+ * the view: named the way the session keys its injected tools, so the two match,
31
+ * plus each tool's own name mapped to that key, so a script may call either.
31
32
  */
32
- const scopeCall = (surface) => surface ? [`globalThis.__archmaxScope(${JSON.stringify(surface.map((name) => toCamelCase(name)))});`] : [];
33
+ const scopeCall = (surface, tools = []) => surface
34
+ ? [
35
+ `globalThis.__archmaxScope(${JSON.stringify(surface.map((name) => toCamelCase(name)))}, ${JSON.stringify(ownNames(tools))});`,
36
+ ]
37
+ : [];
38
+ /** Each tool's own name → the camelCase key the session injects it under, where the two differ. */
39
+ function ownNames(tools) {
40
+ return Object.fromEntries(tools.map((tool) => [tool.name, toCamelCase(tool.name)]).filter(([own, key]) => own !== key));
41
+ }
33
42
  /**
34
43
  * The code a lifecycle hook runs as. The hook body is evaluated as its own
35
44
  * async IIFE (`transformForEval`) so its completion value can be read — a
@@ -96,7 +105,7 @@ export function createScriptExecutor(opts) {
96
105
  const prelude = readPrelude(sandboxContext(params), sandboxVersion);
97
106
  const code = [
98
107
  prelude,
99
- ...scopeCall(params.surface),
108
+ ...scopeCall(params.surface, params.tools),
100
109
  argsAssignment(params.args),
101
110
  `globalThis.__scriptPath = ${JSON.stringify(normalizeRelPath(filePath))};`,
102
111
  source,
@@ -109,7 +118,10 @@ export function createScriptExecutor(opts) {
109
118
  // Same contract as an authored file: the PTC prelude runs first so inline
110
119
  // code sees the same `SANDBOX_CONTRACT` marker, the same scoped `tools` and
111
120
  // the same absence of the hook-only vocabulary.
112
- const preamble = [readPrelude(sandboxContext(params), sandboxVersion), ...scopeCall(params.surface)];
121
+ const preamble = [
122
+ readPrelude(sandboxContext(params), sandboxVersion),
123
+ ...scopeCall(params.surface, params.tools),
124
+ ];
113
125
  return evalCode(`${preamble.join("\n")}\n${code}`, params);
114
126
  },
115
127
  dispose(sessionId, sessionNamespace) {
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/sandbox/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/sandbox/executor.ts"],"names":[],"mappings":"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"}
@@ -29,24 +29,37 @@ const PTC_PRELUDE = [
29
29
  // surface the executor names per evaluation (`__archmaxScope`). Its identity
30
30
  // never changes, so a reference an earlier evaluation kept reads the current
31
31
  // state. `get` still resolves a registered name outside the view, so calling
32
- // one reaches governance and its refusal, not a TypeError. An IIFE: the
33
- // evaluation hoists top-level declarations onto `globalThis`.
32
+ // one reaches governance and its refusal, not a TypeError. The session keys
33
+ // each tool by its camelCase name, but a model writes the name it calls the
34
+ // tool by (`tools.read_file`), so the executor also hands over each tool's own
35
+ // name → its key, and every lookup resolves through that; the listing stays
36
+ // the keys. An IIFE: the evaluation hoists top-level declarations onto
37
+ // `globalThis`.
34
38
  `(() => {
35
39
  if (globalThis.__archmaxScope) return;
36
40
  const all = globalThis.tools != null && typeof globalThis.tools === "object" ? globalThis.tools : {};
37
41
  const injected = (name) => typeof name === "string" && Object.prototype.hasOwnProperty.call(all, name);
38
42
  let surface = null;
43
+ let keys = {};
44
+ const keyOf = (name) =>
45
+ !injected(name) && typeof name === "string" && Object.prototype.hasOwnProperty.call(keys, name) ? keys[name] : name;
39
46
  const visible = (name) => injected(name) && (surface === null || surface.has(name));
40
47
  const view = new Proxy({}, {
41
- get: (_target, name) => (injected(name) ? all[name] : undefined),
42
- has: (_target, name) => visible(name),
48
+ get: (_target, name) => {
49
+ const key = keyOf(name);
50
+ return injected(key) ? all[key] : undefined;
51
+ },
52
+ has: (_target, name) => visible(keyOf(name)),
43
53
  ownKeys: () => Object.keys(all).filter(visible),
44
- getOwnPropertyDescriptor: (_target, name) =>
45
- visible(name) ? { value: all[name], writable: false, enumerable: true, configurable: true } : undefined,
54
+ getOwnPropertyDescriptor: (_target, name) => {
55
+ const key = keyOf(name);
56
+ return visible(key) ? { value: all[key], writable: false, enumerable: true, configurable: true } : undefined;
57
+ },
46
58
  });
47
59
  Object.defineProperty(globalThis, "__archmaxScope", {
48
- value: (names) => {
60
+ value: (names, ownNames) => {
49
61
  surface = new Set(names);
62
+ keys = ownNames ?? {};
50
63
  globalThis.tools = view;
51
64
  },
52
65
  });
@@ -1 +1 @@
1
- {"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../src/sandbox/prelude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAuB,MAAM,wBAAwB,CAAC;AAEtF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC7C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEjD,SAAS,QAAQ;IACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,WAAW,GAAG;IAClB,0FAA0F;IAC1F,8EAA8E;IAC9E,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,wEAAwE;IACxE,8DAA8D;IAC9D;;;;;;;;;;;;;;;;;;;MAmBI;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,UAA0B,gBAAgB,EAC1C,UAAkB,uBAAuB;IAEzC,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,MAAM,GAAG,kCAAkC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;IAC5E,MAAM,KAAK,GACT,OAAO,KAAK,KAAK;QACf,CAAC,CAAC,CAAC,WAAW,CAAC;QACf,CAAC,CAAC;YACE,QAAQ,CAAC,MAAM,CAAC;YAChB,QAAQ,CAAC,gBAAgB,CAAC;SAC3B,CAAC;IACR,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACnC,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../src/sandbox/prelude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAuB,MAAM,wBAAwB,CAAC;AAEtF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC7C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEjD,SAAS,QAAQ;IACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,WAAW,GAAG;IAClB,0FAA0F;IAC1F,8EAA8E;IAC9E,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,+EAA+E;IAC/E,4EAA4E;IAC5E,uEAAuE;IACvE,gBAAgB;IAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4BI;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,UAA0B,gBAAgB,EAC1C,UAAkB,uBAAuB;IAEzC,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,MAAM,GAAG,kCAAkC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;IAC5E,MAAM,KAAK,GACT,OAAO,KAAK,KAAK;QACf,CAAC,CAAC,CAAC,WAAW,CAAC;QACf,CAAC,CAAC;YACE,QAAQ,CAAC,MAAM,CAAC;YAChB,QAAQ,CAAC,gBAAgB,CAAC;SAC3B,CAAC;IACR,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACnC,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archmax-ai/harness",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "type": "module",
5
5
  "description": "Agents can't reliably follow a process. archmax harness makes them: a governed layer over LangChain Deep Agents that enforces a declarative workflow state machine on every step.",
6
6
  "keywords": [
@@ -74,7 +74,10 @@ The calling state must allow every tool the script calls (here
74
74
  `archmax_workflow_enrich-order`). A script's `tools` lists exactly the calling
75
75
  state's tools, re-scoped at every evaluation (so after an advance the same REPL
76
76
  lists the next state's); a tool the state does not offer is unlisted, and
77
- calling it by name is refused with governance's reason.
77
+ calling it by name is refused with governance's reason. The listing is
78
+ camelCased, but a tool's own name reaches the same function
79
+ (`tools["archmax_workflow_enrich-order"]`, `tools.read_file`); a hook's `tools`
80
+ takes the camelCased names alone.
78
81
 
79
82
  **Return into a variable.** A script's result reaches the model as one tool
80
83
  message and no further — it is not written to the variable store, and a script