@archmax-ai/harness 0.7.0 → 0.8.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 (53) hide show
  1. package/README.md +11 -4
  2. package/dist/assembly/compose.d.ts +5 -3
  3. package/dist/assembly/compose.js +8 -5
  4. package/dist/assembly/compose.js.map +1 -1
  5. package/dist/assembly/index.d.ts +3 -2
  6. package/dist/assembly/index.js.map +1 -1
  7. package/dist/authoring-skill/archmax-harness/SKILL.md +9 -5
  8. package/dist/authoring-skill/archmax-harness/references/backend-integration.md +3 -2
  9. package/dist/authoring-skill/archmax-harness/references/diagnostics.md +5 -3
  10. package/dist/authoring-skill/archmax-harness/references/hook-and-test-scripts.md +5 -4
  11. package/dist/authoring-skill/archmax-harness/references/hooks-and-scripts.md +4 -1
  12. package/dist/authoring-skill/archmax-harness/references/workflow-schema.md +78 -46
  13. package/dist/authoring-skill/archmax-harness/references/workflow-yaml.md +30 -14
  14. package/dist/core/platform-prompt.generated.js +1 -1
  15. package/dist/core/platform-prompt.generated.js.map +1 -1
  16. package/dist/core/workspace-prompt.js +2 -1
  17. package/dist/core/workspace-prompt.js.map +1 -1
  18. package/dist/kernel/kernel.js +12 -8
  19. package/dist/kernel/kernel.js.map +1 -1
  20. package/dist/machine/lint-spec.js +62 -29
  21. package/dist/machine/lint-spec.js.map +1 -1
  22. package/dist/machine/machine.d.ts +33 -17
  23. package/dist/machine/machine.js +48 -28
  24. package/dist/machine/machine.js.map +1 -1
  25. package/dist/machine/spec-schema.d.ts +15 -7
  26. package/dist/machine/spec-schema.js +43 -15
  27. package/dist/machine/spec-schema.js.map +1 -1
  28. package/dist/machine/tool-names.d.ts +10 -7
  29. package/dist/machine/tool-names.js +11 -8
  30. package/dist/machine/tool-names.js.map +1 -1
  31. package/dist/machine/tool-paths.d.ts +4 -3
  32. package/dist/machine/tool-paths.js +4 -3
  33. package/dist/machine/tool-paths.js.map +1 -1
  34. package/dist/machine/types.d.ts +14 -8
  35. package/dist/machine/types.js.map +1 -1
  36. package/dist/public/spec.d.ts +3 -3
  37. package/dist/public/spec.js +3 -3
  38. package/dist/public/spec.js.map +1 -1
  39. package/dist/sandbox/executor.js +16 -4
  40. package/dist/sandbox/executor.js.map +1 -1
  41. package/dist/sandbox/prelude.js +20 -7
  42. package/dist/sandbox/prelude.js.map +1 -1
  43. package/dist/workflow/render-prompt.d.ts +2 -1
  44. package/dist/workflow/render-prompt.js +24 -5
  45. package/dist/workflow/render-prompt.js.map +1 -1
  46. package/package.json +1 -1
  47. package/skills/archmax-harness/SKILL.md +9 -5
  48. package/skills/archmax-harness/references/backend-integration.md +3 -2
  49. package/skills/archmax-harness/references/diagnostics.md +5 -3
  50. package/skills/archmax-harness/references/hook-and-test-scripts.md +5 -4
  51. package/skills/archmax-harness/references/hooks-and-scripts.md +4 -1
  52. package/skills/archmax-harness/references/workflow-schema.md +78 -46
  53. package/skills/archmax-harness/references/workflow-yaml.md +30 -14
@@ -18,9 +18,10 @@ export const PATH_ACCESSES = ["read", "list", "search", "write", "remove", "exec
18
18
  /** The accesses that change what is stored: refused wherever a write is. */
19
19
  export const MUTATING_ACCESSES = new Set(["write", "remove"]);
20
20
  /**
21
- * The accesses the always-open `scratchpad/` permits an essential tool in every
22
- * state, whatever the state's `allow` list says. Searching and executing are not
23
- * among them, and a tool a state must grant gets nothing from it.
21
+ * The accesses the always-open `scratchpad/` permits a default file tool the
22
+ * state is granted (or a host `essentialTools` tool), whatever the granting
23
+ * entry narrows. Searching and executing are not among them, and a tool the
24
+ * state is not granted gets nothing from it.
24
25
  */
25
26
  export const SCRATCHPAD_ACCESSES = new Set(["read", "list", "write", "remove"]);
26
27
  /** The accesses the context-offload areas permit: readable, never writable. */
@@ -1 +1 @@
1
- {"version":3,"file":"tool-paths.js","sourceRoot":"","sources":["../../src/machine/tool-paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-paths.js","sourceRoot":"","sources":["../../src/machine/tool-paths.ts"],"names":[],"mappings":"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"}
@@ -15,11 +15,13 @@ import type { allowEntrySchema, hookSchema, forbidEntrySchema, hookSpecSchema, m
15
15
  */
16
16
  export type TransitionType = z.infer<typeof transitionTypeSchema>;
17
17
  /**
18
- * One outgoing edge of a state. `description` is **required and non-empty**: the
19
- * agent is disclosed the active state's edges and nothing else of the graph, so
20
- * this is the whole of what it routes on — write it for a reader standing in the
21
- * source state, which knows nothing of the target ("Refunds over $50", never "go
22
- * to refund-review"). At a human state it is also the decision's button label.
18
+ * One outgoing edge of a state. The agent is disclosed the active state's edges
19
+ * and nothing else of the graph, so `description` is what it routes on — write it
20
+ * for a reader standing in the source state, which knows nothing of the target
21
+ * ("Refunds over $50", never "go to refund-review"). An **undescribed** edge
22
+ * (absent, empty or blank) routes on the target state's `instructions` instead,
23
+ * which the edge then discloses; it loads only when the target has some. At a
24
+ * human state the description is also the decision's button label, and required.
23
25
  */
24
26
  export type MachineTransition = z.infer<typeof machineTransitionSchema>;
25
27
  /**
@@ -44,8 +46,9 @@ export type StateBudget = z.infer<typeof stateBudgetSchema>;
44
46
  export type AllowEntry = z.infer<typeof allowEntrySchema>;
45
47
  /**
46
48
  * Per-state tool governance. Allow-only: a state with `allow` permits exactly the
47
- * listed tools/arg-shapes (plus workflow-level `allow_always` grants and the
48
- * essential surface); a state without one gets the essential surface only.
49
+ * listed tools/arg-shapes plus the workflow-wide grant (the declared
50
+ * `allow_always`, else the default tools) and the host's `essentialTools`; a
51
+ * state without one gets those two only.
49
52
  */
50
53
  export type ToolsBlock = z.infer<typeof toolsBlockSchema>;
51
54
  /**
@@ -100,7 +103,10 @@ export type StateType = z.infer<typeof stateTypeSchema>;
100
103
  * `model` → the assembly's default, read once through `WorkflowMachine.modelFor`.
101
104
  */
102
105
  export type MachineState = z.infer<typeof machineStateSchema>;
103
- /** Workflow-level tool grants. */
106
+ /**
107
+ * Workflow-level tool governance. A declared `allow_always` is the whole
108
+ * workflow-wide grant; an absent one grants the default tools.
109
+ */
104
110
  export type WorkflowToolsConfig = z.infer<typeof workflowToolsConfigSchema>;
105
111
  /**
106
112
  * Workflow-level skill governance: `allow_always` is enabled in every state and
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/machine/types.ts"],"names":[],"mappings":"AA+OA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAoC;IAC/D,MAAM,QAAQ,GAAI,IAAkD,EAAE,QAAQ,CAAC;IAC/E,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/machine/types.ts"],"names":[],"mappings":"AAqPA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAoC;IAC/D,MAAM,QAAQ,GAAI,IAAkD,EAAE,QAAQ,CAAC;IAC/E,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC;AAC3E,CAAC"}
@@ -122,11 +122,11 @@ isReservedToolName,
122
122
  HARNESS_CONTROL_TOOLS,
123
123
  /** Tools permitted in every state regardless of `allow`. */
124
124
  ALWAYS_ALLOWED_TOOLS,
125
- /** The always-on built-ins a state's own entry may narrow but `allow_always` cannot add to. */
126
- ESSENTIAL_TOOLS,
125
+ /** The workflow-wide grant when `tools.allow_always` is absent; a declared list replaces it. */
126
+ DEFAULT_TOOLS,
127
127
  /** Tools no list may grant (`task`). */
128
128
  UNGRANTABLE_TOOLS, ReservedToolNameError,
129
- /** The runtime's file operations, always on in every agent. */
129
+ /** The runtime's file operations, registered in every agent and among the default tools. */
130
130
  COPY_FILE_TOOL, MOVE_FILE_TOOL, REMOVE_FILE_TOOL, RUNTIME_FILE_TOOLS, } from "../machine/tool-names.js";
131
131
  /** Each built-in tool's path arguments and how a call uses each. */
132
132
  export { BUILT_IN_TOOL_PATHS, PATH_ACCESSES } from "../machine/tool-paths.js";
@@ -120,11 +120,11 @@ isReservedToolName,
120
120
  HARNESS_CONTROL_TOOLS,
121
121
  /** Tools permitted in every state regardless of `allow`. */
122
122
  ALWAYS_ALLOWED_TOOLS,
123
- /** The always-on built-ins a state's own entry may narrow but `allow_always` cannot add to. */
124
- ESSENTIAL_TOOLS,
123
+ /** The workflow-wide grant when `tools.allow_always` is absent; a declared list replaces it. */
124
+ DEFAULT_TOOLS,
125
125
  /** Tools no list may grant (`task`). */
126
126
  UNGRANTABLE_TOOLS, ReservedToolNameError,
127
- /** The runtime's file operations, always on in every agent. */
127
+ /** The runtime's file operations, registered in every agent and among the default tools. */
128
128
  COPY_FILE_TOOL, MOVE_FILE_TOOL, REMOVE_FILE_TOOL, RUNTIME_FILE_TOOLS, } from "../machine/tool-names.js";
129
129
  /** Each built-in tool's path arguments and how a call uses each. */
130
130
  export { BUILT_IN_TOOL_PATHS, PATH_ACCESSES } from "../machine/tool-paths.js";
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/public/spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/public/spec.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -17,7 +17,8 @@
17
17
  * No other state's slug, `title`, `summary`, hooks, budget or transitions is
18
18
  * rendered anywhere, and neither is a count of the states: a state the agent
19
19
  * cannot advance to is a state it cannot name. A state's `instructions` body is
20
- * surfaced only for the active state, by the caller.
20
+ * surfaced for the active state, by the caller, and — quoted, for choosing — for
21
+ * the target of an undescribed edge of the active state, by this renderer.
21
22
  */
22
23
  import type { WorkflowMachine } from "../machine/machine.js";
23
24
  /** What {@link renderStateGraph} needs about the run, beyond the state it is in. */
@@ -17,20 +17,27 @@
17
17
  * No other state's slug, `title`, `summary`, hooks, budget or transitions is
18
18
  * rendered anywhere, and neither is a count of the states: a state the agent
19
19
  * cannot advance to is a state it cannot name. A state's `instructions` body is
20
- * surfaced only for the active state, by the caller.
20
+ * surfaced for the active state, by the caller, and — quoted, for choosing — for
21
+ * the target of an undescribed edge of the active state, by this renderer.
21
22
  */
22
23
  import { afterHookLabel, hookKind, normalizeHooks } from "../lifecycle/hook-shape.js";
23
24
  import { ADVANCE_TOOL, SET_VARIABLES_TOOL } from "../machine/tool-names.js";
24
25
  /**
25
26
  * One outgoing edge: the target's slug (the exact token `archmax_advance` takes),
26
- * its declared `type`, and the required `description` the agent routes on.
27
+ * its declared `type`, and the `description` the agent routes on.
27
28
  *
28
29
  * The two markers a target may carry are disclosed because each changes what the
29
30
  * call must carry or what follows it — `evidence` is accepted only when the
30
31
  * target is a human state, and both markers mean *stop* rather than *continue*.
31
32
  * They disclose the **consequence of taking the edge**, not the state on the
32
- * other side of it: nothing of the target's own title, summary, instructions,
33
- * hooks or transitions is rendered.
33
+ * other side of it: nothing of the target's own title, summary, hooks or
34
+ * transitions is rendered.
35
+ *
36
+ * An **undescribed** edge (no description, or a blank one) is transparent: the
37
+ * target's `instructions` stand in for the description, quoted under the line
38
+ * and framed as what the agent will do once there — given for choosing the edge,
39
+ * not to be followed now. The author opts in per edge by leaving it undescribed;
40
+ * the schema refuses one whose target has no instructions to show.
34
41
  */
35
42
  function renderTransition(machine, edge) {
36
43
  const notes = [];
@@ -41,7 +48,19 @@ function renderTransition(machine, edge) {
41
48
  if (machine.isTerminal(edge.to))
42
49
  notes.push("terminal");
43
50
  const suffix = notes.length ? ` (${notes.join(", ")})` : "";
44
- return `- to \`${edge.to}\`${suffix} — ${edge.description.trim()}`;
51
+ const head = `- to \`${edge.to}\`${suffix}`;
52
+ const description = edge.description?.trim();
53
+ if (description)
54
+ return `${head} — ${description}`;
55
+ const instructions = machine.spec.states[edge.to]?.instructions?.trim() ?? "";
56
+ const quoted = instructions
57
+ .split("\n")
58
+ .map((line) => (line.trim() ? ` > ${line.trimEnd()}` : " >"));
59
+ return [
60
+ `${head} — no description; the instructions you will follow once in \`${edge.to}\`, ` +
61
+ `given only for choosing this edge:`,
62
+ ...(instructions ? quoted : []),
63
+ ].join("\n");
45
64
  }
46
65
  /**
47
66
  * The active state's hooks, by phase. A **rubric** hook renders as its bare kind
@@ -1 +1 @@
1
- {"version":3,"file":"render-prompt.js","sourceRoot":"","sources":["../../src/workflow/render-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-prompt.js","sourceRoot":"","sources":["../../src/workflow/render-prompt.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archmax-ai/harness",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
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": [
@@ -55,8 +55,10 @@ then verify. Do not write a file, validate, and discover the next file.
55
55
  `triggers: { manual: }` (plus any host trigger ids that enter there),
56
56
  terminal states (no `transitions`), the edges between them — and for each
57
57
  edge, the *condition* under which it is taken. That condition is the edge's
58
- required `description`, and it is the only thing the agent will know about
59
- where the edge leads. If something outside the session calls the workflow
58
+ `description`, which is what the agent knows about where the edge leads. Leave
59
+ an edge undescribed only when the target's `instructions` already say when it
60
+ applies: the agent is then shown them instead (never on a human state's
61
+ transitions, whose description is the button label). If something outside the session calls the workflow
60
62
  (another workflow, a host's MCP tool or form), give its trigger a
61
63
  `description` for the caller and a `requires`/`returns` signature, typing an
62
64
  entry (`{ name, type, description }`; `string` `integer` `number` `boolean`
@@ -77,7 +79,9 @@ then verify. Do not write a file, validate, and discover the next file.
77
79
  `skills/<capability>/` bundle only for data, an `archmax_run` script, or
78
80
  guidance two or more states share identically; `AGENTS.md` only for a
79
81
  workspace-wide persona.
80
- 3. **Write `workflow.yaml`** from the skeleton in [`references/workflow-yaml.md`](references/workflow-yaml.md). Each state's behaviour
82
+ 3. **Write `workflow.yaml`** from the skeleton in [`references/workflow-yaml.md`](references/workflow-yaml.md),
83
+ keeping its `tools.allow_always` list of the twelve default tools: a declared
84
+ list replaces them, so drop only a tool this workflow must not have. Each state's behaviour
81
85
  goes inline in its `instructions`; run-wide rules once in the top-level
82
86
  `instructions`; nothing about the machine itself (the platform prompt and
83
87
  the disclosed edges already say it, and prose is billed on every call), and
@@ -212,8 +216,8 @@ Rules that follow:
212
216
  (`script.skill-only`): a script in `scratchpad/` or `hooks/` is unrunnable.
213
217
  - **Paths have no leading slash** (`skills/order-data/assets/orders.json`,
214
218
  `scratchpad/refund.json`); never author a `run/` prefix. `scratchpad/` is
215
- writable in every state regardless of `tools.allow`, so an allow entry
216
- inside it narrows nothing (warning); to govern *where* a result lands, name
219
+ writable in every state that is granted `write_file`, whatever its entry
220
+ narrows, so an allow entry inside it narrows nothing (warning); to govern *where* a result lands, name
217
221
  a non-reserved run path (`reports/*.json`) and allow it.
218
222
  - **Guidance has three homes, one per rule**: every workflow → `AGENTS.md`;
219
223
  the whole run → top-level `instructions` (`|-` literal block, since `>-`
@@ -100,7 +100,7 @@ All optional (`CreateAgentParams`, `src/assembly/index.ts`):
100
100
  | `sessionStore` | `SessionStore` | Physical storage for run state (checkpoints, artifacts, the per-session `scratchpad/`). Zero-config default: `createFilesystemSessionStore({ dir: "<rootDir>/sessions" })`. Required with a custom `backend` (else `SessionStoreRequiredError`). Build with `createBackendSessionStore({ backend, prefix? })` for S3-style storage or `createMemorySessionStore()` for ephemeral runs. |
101
101
  | `systemPrompt` | `string` | Appended after workspace `AGENTS.md`. |
102
102
  | `tools` | `StructuredTool[]` | Host tools, granted per state by `tools.allow`. Build them with `toolsFromMap` — see [host tools](#host-tools). A name starting `archmax_`, or naming a runtime file operation (`copy_file`, `move_file`, `remove_file`), throws `ReservedToolNameError`. |
103
- | `essentialTools` | `string[]` | Host tools treated as always on: disclosed and permitted in every state; a state's own entry still narrows one. |
103
+ | `essentialTools` | `string[]` | Host tools treated as always on: disclosed and permitted in every state, whatever the workflow's `tools.allow_always` declares; a state's own entry still narrows one. |
104
104
  | `images` | `boolean \| ImageReadOptions` | Show a model with vision the images it reads: the model's `read_file` of a PNG/JPEG/GIF/WebP answers with one line and the image is added to each later request as a `user` message after that batch of tool results, read per request — no bytes in history, checkpoints, events or scripts. `{ maxBytes?, keep? }` (default 10 MB, every image). Off by default; every other binary stays refused. |
105
105
  | `toolPaths` | `Record<string, ToolPaths>` | Each host tool's path arguments and how a call uses each (`read`, `list`, `search`, `write`, `remove`, `execute`): `{ get_markdown: { path: "read" } }`. Every path rule then governs them like the built-ins'. Wins over a descriptor's `paths`; declaring a built-in's paths throws `ToolPathsError`. |
106
106
  | `checkpointer` | `BaseCheckpointSaver` | Custom-adapter escape hatch; takes precedence over the session store for checkpoint persistence. Defaults to a durable `BackendCheckpointSaver` writing through the session store. Use `MemorySaver` for ephemeral runs. |
@@ -681,7 +681,8 @@ const agent = await createAgent({ tools, essentialTools: ["get_markdown"] });
681
681
  never runs the handler. No declaration, no path rules. An argument may hold a
682
682
  list of paths (`files: string[]`), each governed; any other shape is refused.
683
683
  Declaring paths only narrows: `scratchpad/` is open in every state to the
684
- always-on tools, so a tool a state must grant stays refused where it is not.
684
+ default file tools the state is granted and to `essentialTools`, so a tool a
685
+ state must grant stays refused where it is not.
685
686
  - `context.workspace` is the turn's workspace, bound to the session — the
686
687
  instance `read_file` uses — with `downloadFiles`, `uploadFiles` (when the
687
688
  session store has it) and `delete` besides the text methods. The plain agent
@@ -27,12 +27,14 @@ message alone. Migrations for removed keys in full:
27
27
  | not a skill slug (path/glob given) | Use the bundle directory name; narrow paths with a `tools.allow` entry |
28
28
  | `${{…}}` not a valid variable reference | `${{name}}` or `${{name.path}}`; snake_case names |
29
29
  | guards on `${{x}}` but no state requires it (warning) | Add `x` to an earlier state's `requires`, or seed it at assembly |
30
- | `allow` on a path in `scratchpad/` (warning) | Drop it, or govern a non-reserved run path instead |
31
- | `tools.allow_always` constrains essential tool (warning) | Narrow per state with `tools.allow` |
30
+ | `allow` or `allow_always` on a path in `scratchpad/` (warning) | Drop it, or govern a non-reserved run path instead |
31
+ | `tools.allow_always` is declared but grants none of the default tools (warning) | A declared list replaces the default tools: list the ones the workflow needs (`ls`, `read_file`, `write_file`, … as in the skeleton), or remove the key to grant them all |
32
32
  | state both allows and forbids / forbids what nothing enables / enables what allow_always already does / `skills: { allow: [] }` reads like a deny (warnings) | Drop the redundant entry; use `forbid` to subtract |
33
33
  | no top-level `instructions` (warning) | Add the standing block |
34
34
  | state has several transitions but no `instructions` (warning) | Add routing guidance so the agent classifies the request before it advances |
35
- | `transitions.<i>.description` must be a non-empty string (error) | Add the condition under which that edge is taken — it is the only thing the agent knows about it. Say *when*, not *where* |
35
+ | `transitions.<i>.description` must be a non-empty string here: '<target>' declares none (error) | The edge is undescribed and its target has no `instructions` to route on. Add the condition under which the edge is taken (say *when*, not *where*), or give the target instructions |
36
+ | `transitions.<i>.description` must be a non-empty string on a human state's transition (error) | It is the decision's button label: say what choosing it means |
37
+ | `transitions.<i>.description` must be a string (error) | Quote it, or omit it to route on the target's instructions |
36
38
  | trigger declares unknown key (warning) | Keys read: `session`, `message`, `connection`, `requires`, `returns`; others are preserved |
37
39
  | `maxConcurrency` above 1 | Set to 1 or remove |
38
40
  | `WORKFLOW.md` has frontmatter | Strip it; the machine is `workflow.yaml` |
@@ -275,8 +275,9 @@ resolves to an `Error: …` string instead.
275
275
  **Authoring rule for `archmax_run` scripts:** if sandboxed code calls `tools.X`,
276
276
  the state's `allow` list must cover `tool: X` (with any argument constraints the
277
277
  script's call satisfies), or the call is blocked. Grant it per state with
278
- `tools.allow`, or workflow-wide with `tools.allow_always`. Lifecycle hooks need
279
- no such grant.
278
+ `tools.allow`, or workflow-wide with `tools.allow_always`; a default tool such as
279
+ `read_file` is covered wherever the workflow-wide grant includes it. Lifecycle
280
+ hooks need no such grant.
280
281
 
281
282
  ### `archmax_run` scripts: the `args` contract
282
283
 
@@ -775,8 +776,8 @@ steps:
775
776
  Two operational notes:
776
777
 
777
778
  - Seeding writes the file; **reading it is still governed** — the triggered
778
- start state must allow the read tool the agent needs (`read_file` is an
779
- always-on tools unless a state narrows it).
779
+ start state must allow the read tool the agent needs (`read_file` is granted
780
+ wherever the workflow-wide grant includes it, unless a state narrows it).
780
781
  - Hosts that pin case sessions via `sessionIdForCase` reuse sessions across test
781
782
  runs: declared files are overwritten each run, but a file seeded by an
782
783
  _earlier_ run whose declaration was since removed can linger. The default
@@ -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