@archmax-ai/harness 0.4.0 → 0.4.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.
Files changed (44) hide show
  1. package/dist/assembly/compose.js +4 -1
  2. package/dist/assembly/compose.js.map +1 -1
  3. package/dist/assembly/plain.js +4 -1
  4. package/dist/assembly/plain.js.map +1 -1
  5. package/dist/authoring-skill/archmax-harness/references/backend-integration.md +24 -13
  6. package/dist/authoring-skill/archmax-harness/references/workflow-schema.md +5 -1
  7. package/dist/core/binary-read.d.ts +1 -9
  8. package/dist/core/binary-read.js +2 -38
  9. package/dist/core/binary-read.js.map +1 -1
  10. package/dist/core/binary-types.d.ts +19 -0
  11. package/dist/core/binary-types.js +54 -0
  12. package/dist/core/binary-types.js.map +1 -0
  13. package/dist/core/path-mapping.d.ts +11 -4
  14. package/dist/core/path-mapping.js +18 -14
  15. package/dist/core/path-mapping.js.map +1 -1
  16. package/dist/core/raw-download.d.ts +16 -0
  17. package/dist/core/raw-download.js +56 -0
  18. package/dist/core/raw-download.js.map +1 -0
  19. package/dist/core/session-zone.d.ts +7 -2
  20. package/dist/core/session-zone.js +9 -3
  21. package/dist/core/session-zone.js.map +1 -1
  22. package/dist/core/tool-context.d.ts +6 -2
  23. package/dist/core/tool-context.js.map +1 -1
  24. package/dist/core/workspace-context.js +1 -0
  25. package/dist/core/workspace-context.js.map +1 -1
  26. package/dist/core/workspace-router.d.ts +21 -2
  27. package/dist/core/workspace-router.js +47 -14
  28. package/dist/core/workspace-router.js.map +1 -1
  29. package/dist/kernel/kernel.js +33 -2
  30. package/dist/kernel/kernel.js.map +1 -1
  31. package/dist/machine/machine.d.ts +5 -0
  32. package/dist/machine/machine.js +7 -0
  33. package/dist/machine/machine.js.map +1 -1
  34. package/dist/machine/tool-paths.d.ts +20 -7
  35. package/dist/machine/tool-paths.js +44 -16
  36. package/dist/machine/tool-paths.js.map +1 -1
  37. package/dist/public/spec.d.ts +5 -0
  38. package/dist/public/spec.js +5 -0
  39. package/dist/public/spec.js.map +1 -1
  40. package/dist/workflow/agent-tools.js +8 -4
  41. package/dist/workflow/agent-tools.js.map +1 -1
  42. package/package.json +1 -1
  43. package/skills/archmax-harness/references/backend-integration.md +24 -13
  44. package/skills/archmax-harness/references/workflow-schema.md +5 -1
@@ -18,8 +18,9 @@ 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 in every state, whatever
22
- * the state's `allow` list says. Searching and executing are not among them.
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.
23
24
  */
24
25
  export const SCRATCHPAD_ACCESSES = new Set(["read", "list", "write", "remove"]);
25
26
  /** The accesses the context-offload areas permit: readable, never writable. */
@@ -89,39 +90,66 @@ export function resolveToolPaths(host) {
89
90
  }
90
91
  return table;
91
92
  }
93
+ /** A declared argument's value, read through the built-in alias as the tool itself reads it. */
94
+ function declaredValue(tool, arg, args) {
95
+ const alias = BUILT_IN_PATH_ALIASES[tool]?.[arg];
96
+ return args[arg] ?? (alias === undefined ? undefined : args[alias]);
97
+ }
92
98
  /**
93
99
  * The declared path arguments a call actually carries, in declaration order. An
94
- * argument the call omits, or passes as something other than a string, names no
95
- * path: the tool's own argument check refuses it.
100
+ * argument holds one path or a list of paths; each path of a list is governed
101
+ * with the argument's access. An argument the call omits names no path, and
102
+ * neither does an empty list. A value of any other shape names no path here
103
+ * either: {@link malformedPathArgs} is how the kernel refuses it.
96
104
  */
97
105
  export function declaredPathsOf(tool, paths, args) {
98
106
  if (!paths)
99
107
  return [];
100
- const aliases = BUILT_IN_PATH_ALIASES[tool];
101
108
  const found = [];
102
109
  for (const [arg, access] of Object.entries(paths)) {
103
- const alias = aliases?.[arg];
104
- const value = args[arg] ?? (alias === undefined ? undefined : args[alias]);
105
- if (typeof value === "string")
106
- found.push({ arg, access, path: value });
110
+ const value = declaredValue(tool, arg, args);
111
+ const list = Array.isArray(value) ? value : [value];
112
+ for (const path of list)
113
+ if (typeof path === "string")
114
+ found.push({ arg, access, path });
107
115
  }
108
116
  return found;
109
117
  }
118
+ /**
119
+ * The declared path arguments a call passes as something other than a path or
120
+ * a list of paths — a number, an object, a list holding one. A path rule cannot
121
+ * read such a value, so the kernel refuses the call rather than let a path
122
+ * inside it through ungoverned.
123
+ */
124
+ export function malformedPathArgs(tool, paths, args) {
125
+ if (!paths)
126
+ return [];
127
+ return Object.keys(paths).filter((arg) => {
128
+ const value = declaredValue(tool, arg, args);
129
+ if (value == null || typeof value === "string")
130
+ return false;
131
+ return !Array.isArray(value) || value.some((path) => typeof path !== "string");
132
+ });
133
+ }
110
134
  /** The arguments a `paths:` guard matches for `tool`: its declared ones, else `file_path`. */
111
135
  export function pathArgsOf(paths) {
112
136
  const declared = Object.keys(paths ?? {});
113
137
  return declared.length > 0 ? declared : [DEFAULT_PATH_ARG];
114
138
  }
115
139
  /**
116
- * The values a `paths:` guard on `tool` tests, one per argument it matches
117
- * ({@link pathArgsOf}), read through the built-in aliases as the path rules read
118
- * them. An argument the call omits is `undefined`, which no glob matches.
140
+ * The values a `paths:` guard on `tool` tests: every path of every argument it
141
+ * matches ({@link pathArgsOf}), read through the built-in aliases as the path
142
+ * rules read them — one value for an argument holding a path, one per element
143
+ * for a list, so a grant needs each element to match and a denial any. An
144
+ * argument the call omits, or passes as an empty list, is `undefined`, which no
145
+ * glob matches.
119
146
  */
120
147
  export function pathValuesOf(tool, paths, args) {
121
- const aliases = BUILT_IN_PATH_ALIASES[tool];
122
- return pathArgsOf(paths).map((arg) => {
123
- const alias = aliases?.[arg];
124
- return args[arg] ?? (alias === undefined ? undefined : args[alias]);
148
+ return pathArgsOf(paths).flatMap((arg) => {
149
+ const value = declaredValue(tool, arg, args);
150
+ if (!Array.isArray(value))
151
+ return [value];
152
+ return value.length > 0 ? value : [undefined];
125
153
  });
126
154
  }
127
155
  //# sourceMappingURL=tool-paths.js.map
@@ -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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"}
@@ -131,6 +131,11 @@ COPY_FILE_TOOL, MOVE_FILE_TOOL, REMOVE_FILE_TOOL, RUNTIME_FILE_TOOLS, } from "..
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";
133
133
  export type { ToolPaths, PathAccess } from "../machine/tool-paths.js";
134
+ export {
135
+ /** Deep Agents' binary types by extension: the paths a `write` addresses with base64 the store decodes. */
136
+ BINARY_MIME_TYPES,
137
+ /** A path's binary MIME type, or `undefined` when Deep Agents reads it as text. */
138
+ binaryMimeTypeOf, } from "../core/binary-types.js";
134
139
  export { DEFAULT_SUB_WORKFLOW_DEPTH, DEFAULT_SUB_WORKFLOW_CONCURRENCY } from "../machine/delegation.js";
135
140
  export { SESSION_INTERNAL_DIRS, SESSION_OFFLOAD_DIRS, SESSION_OPEN_DIR, SESSION_AGNOSTIC_PREFIX, SESSION_AGNOSTIC_PREFIXES, NO_MOUNTS,
136
141
  /** Every session-area name the runtime owns at the workspace root. */
@@ -128,6 +128,11 @@ UNGRANTABLE_TOOLS, ReservedToolNameError,
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";
131
+ export {
132
+ /** Deep Agents' binary types by extension: the paths a `write` addresses with base64 the store decodes. */
133
+ BINARY_MIME_TYPES,
134
+ /** A path's binary MIME type, or `undefined` when Deep Agents reads it as text. */
135
+ binaryMimeTypeOf, } from "../core/binary-types.js";
131
136
  export { DEFAULT_SUB_WORKFLOW_DEPTH, DEFAULT_SUB_WORKFLOW_CONCURRENCY } from "../machine/delegation.js";
132
137
  // --- The root namespace ---------------------------------------------------------------
133
138
  export { SESSION_INTERNAL_DIRS, SESSION_OFFLOAD_DIRS, SESSION_OPEN_DIR, SESSION_AGNOSTIC_PREFIX, SESSION_AGNOSTIC_PREFIXES, NO_MOUNTS,
@@ -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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"}
@@ -14,15 +14,19 @@ export function toolsFromMap(entries) {
14
14
  /**
15
15
  * The context of a call made outside any turn (a host invoking the tool
16
16
  * directly): the handler still runs, and only reaching for the workspace — which
17
- * exists per session, per turn — fails, saying why.
17
+ * exists per session, per turn — fails, saying why. The property is
18
+ * non-enumerable, so a deep-equality check or a logger that walks the context
19
+ * skips it instead of throwing; `"workspace" in context` still tells a caller
20
+ * whether one may be read.
18
21
  */
19
22
  function outsideTurn(id) {
20
- return {
21
- get workspace() {
23
+ return Object.defineProperty({}, "workspace", {
24
+ enumerable: false,
25
+ get() {
22
26
  throw new Error(`Tool '${id}' ran outside a session turn; its workspace exists only while an agent turn ` +
23
27
  `is running.`);
24
28
  },
25
- };
29
+ });
26
30
  }
27
31
  /**
28
32
  * The path declarations the host's tools carry in their metadata (set by
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tools.js","sourceRoot":"","sources":["../../src/workflow/agent-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAoB,MAAM,yBAAyB,CAAC;AAG/E,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAoBvD,0HAA0H;AAC1H,MAAM,UAAU,YAAY,CAAC,OAA4C;IACvE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAChC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CACd,IAAI,CACF,KAAK,EAAE,KAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,EACvG;QACE,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM,EAAE,KAAK,CAAC,WAAW;QACzB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAC2B,CACjC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,EAAU;IAC7B,OAAO;QACL,IAAI,SAAS;YACX,MAAM,IAAI,KAAK,CACb,SAAS,EAAE,8EAA8E;gBACvF,aAAa,CAChB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA4C;IAChF,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAI,SAAS,CAAC,QAAgD,EAAE,CAAC,uBAAuB,CAAC,CAAC;QACrG,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAkB,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"agent-tools.js","sourceRoot":"","sources":["../../src/workflow/agent-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAoB,MAAM,yBAAyB,CAAC;AAG/E,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAoBvD,0HAA0H;AAC1H,MAAM,UAAU,YAAY,CAAC,OAA4C;IACvE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAChC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CACd,IAAI,CACF,KAAK,EAAE,KAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,EACvG;QACE,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM,EAAE,KAAK,CAAC,WAAW;QACzB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAC2B,CACjC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,EAAU;IAC7B,OAAO,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE;QAC5C,UAAU,EAAE,KAAK;QACjB,GAAG;YACD,MAAM,IAAI,KAAK,CACb,SAAS,EAAE,8EAA8E;gBACvF,aAAa,CAChB,CAAC;QACJ,CAAC;KACF,CAAgB,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA4C;IAChF,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAI,SAAS,CAAC,QAAgD,EAAE,CAAC,uBAAuB,CAAC,CAAC;QACrG,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAkB,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archmax-ai/harness",
3
- "version": "0.4.0",
3
+ "version": "0.4.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": [
@@ -601,15 +601,22 @@ A custom `backend` **requires** an explicit `sessionStore` — assembly throws
601
601
  Persisting the session zone off-box (an S3-backed session store) is how you share run
602
602
  state across a worker fleet and an API.
603
603
 
604
- The file operations (`copy_file`, `move_file`, `remove_file`) want more than
605
- text. A write to a binary-typed path (an image, a PDF) carries **base64**, which
606
- the backend's `write` must decode — Deep Agents' convention. Bytes the text
607
- channel cannot carry (a `.docx`, a `.zip`, Latin-1 text) travel through
608
- `uploadFiles`, and a move or removal needs `delete`. Every copy is read back
609
- (`downloadFiles`, else `readRaw`); a store that kept something else is refused,
610
- never reported as copied. Implement all three methods and the base64 decode on a
611
- custom backend — mounts and session store alike. A read-only mount refuses an
612
- upload and a delete itself.
604
+ `downloadFiles`, `uploadFiles` and `delete` are optional in the protocol and stay
605
+ optional in the workspace: a store with only the required methods serves skills,
606
+ reads and text copies. `downloadFiles` is always present and reads a store without
607
+ it through `readRaw` (exact bytes or `permission_denied`, never altered text);
608
+ `uploadFiles` is present when the session store has it, and a mount without it
609
+ refuses that file; `delete` answers a store without it with an error. What each
610
+ buys the file operations (`copy_file`, `move_file`, `remove_file`): a write to a
611
+ binary-typed path (an image, a PDF) carries **base64**, which the backend's
612
+ `write` must decode — Deep Agents' convention, with the extensions in
613
+ `BINARY_MIME_TYPES` on `@archmax-ai/harness/spec`. Other bytes the text channel
614
+ cannot carry (a `.docx`, a `.zip`, Latin-1 text) need `uploadFiles`, and a move
615
+ or removal needs `delete`. Every copy is read back; a store that kept something
616
+ else is refused, never reported as copied. A read-only mount refuses an upload
617
+ and a delete itself. Deep Agents is handed the workspace without `delete`, so its
618
+ own recursive `delete` tool never exists: `remove_file` is the one way to delete
619
+ a file.
613
620
 
614
621
  ### Host tools
615
622
 
@@ -636,11 +643,15 @@ const agent = await createAgent({ tools, essentialTools: ["get_markdown"] });
636
643
  areas, the skills and mounts the state was given (`mount.not-allowed`,
637
644
  `skill.not-allowed`), a mount's `access: read` (`mount.read-only` for a
638
645
  `write` or `remove`), inherited denials and `paths:` guards. A refused call
639
- never runs the handler. No declaration, no path rules.
646
+ never runs the handler. No declaration, no path rules. An argument may hold a
647
+ list of paths (`files: string[]`), each governed; any other shape is refused.
648
+ Declaring paths only narrows: `scratchpad/` is open in every state to the
649
+ always-on tools, so a tool a state must grant stays refused where it is not.
640
650
  - `context.workspace` is the turn's workspace, bound to the session — the
641
- instance `read_file` uses — with `downloadFiles`/`uploadFiles` and `delete`
642
- besides the text methods. The plain agent hands the same context. Outside a
643
- turn, reading it throws.
651
+ instance `read_file` uses — with `downloadFiles`, `uploadFiles` (when the
652
+ session store has it) and `delete` besides the text methods. The plain agent
653
+ hands the same context. Outside a turn, reading it throws; the property is
654
+ non-enumerable there, so comparing or logging the context does not.
644
655
 
645
656
  ## Cases against your agent
646
657
 
@@ -741,7 +741,11 @@ entry guards every declared path argument: a grant needs all of them to match
741
741
  (`{ tool: copy_file, paths: [skills/**, reports/**] }`), a denial needs one
742
742
  (`{ tool: "*", paths: [secrets/**] }` blocks a copy in or out). A host tool that
743
743
  declares its paths (`toolPaths`, or a descriptor's `paths`) is governed the same
744
- way. Any other tool
744
+ way; an argument may hold a list of paths, each one governed (and each one
745
+ tested by a `paths:` guard), and any other shape is refused
746
+ (`tool.path-argument`). `scratchpad/` is open in every state to the always-on
747
+ tools only — a host tool a state must grant stays refused where it is not
748
+ granted, whatever its paths. Any other tool
745
749
  must be declared in the state's `tools.allow` or workflow-level
746
750
  `tools.allow_always`. A `tools.allow` entry naming an always-on tool **narrows**
747
751
  it for that state.