@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.
- package/dist/assembly/compose.js +4 -1
- package/dist/assembly/compose.js.map +1 -1
- package/dist/assembly/plain.js +4 -1
- package/dist/assembly/plain.js.map +1 -1
- package/dist/authoring-skill/archmax-harness/references/backend-integration.md +24 -13
- package/dist/authoring-skill/archmax-harness/references/workflow-schema.md +5 -1
- package/dist/core/binary-read.d.ts +1 -9
- package/dist/core/binary-read.js +2 -38
- package/dist/core/binary-read.js.map +1 -1
- package/dist/core/binary-types.d.ts +19 -0
- package/dist/core/binary-types.js +54 -0
- package/dist/core/binary-types.js.map +1 -0
- package/dist/core/path-mapping.d.ts +11 -4
- package/dist/core/path-mapping.js +18 -14
- package/dist/core/path-mapping.js.map +1 -1
- package/dist/core/raw-download.d.ts +16 -0
- package/dist/core/raw-download.js +56 -0
- package/dist/core/raw-download.js.map +1 -0
- package/dist/core/session-zone.d.ts +7 -2
- package/dist/core/session-zone.js +9 -3
- package/dist/core/session-zone.js.map +1 -1
- package/dist/core/tool-context.d.ts +6 -2
- package/dist/core/tool-context.js.map +1 -1
- package/dist/core/workspace-context.js +1 -0
- package/dist/core/workspace-context.js.map +1 -1
- package/dist/core/workspace-router.d.ts +21 -2
- package/dist/core/workspace-router.js +47 -14
- package/dist/core/workspace-router.js.map +1 -1
- package/dist/kernel/kernel.js +33 -2
- package/dist/kernel/kernel.js.map +1 -1
- package/dist/machine/machine.d.ts +5 -0
- package/dist/machine/machine.js +7 -0
- package/dist/machine/machine.js.map +1 -1
- package/dist/machine/tool-paths.d.ts +20 -7
- package/dist/machine/tool-paths.js +44 -16
- package/dist/machine/tool-paths.js.map +1 -1
- package/dist/public/spec.d.ts +5 -0
- package/dist/public/spec.js +5 -0
- package/dist/public/spec.js.map +1 -1
- package/dist/workflow/agent-tools.js +8 -4
- package/dist/workflow/agent-tools.js.map +1 -1
- package/package.json +1 -1
- package/skills/archmax-harness/references/backend-integration.md +24 -13
- 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
|
|
22
|
-
* the state's `allow` list says. Searching and executing are not
|
|
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
|
|
95
|
-
*
|
|
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
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
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
|
|
117
|
-
* ({@link pathArgsOf}), read through the built-in aliases as the path
|
|
118
|
-
* them
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQ7F,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE7G,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAA4B,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvF
|
|
1
|
+
{"version":3,"file":"tool-paths.js","sourceRoot":"","sources":["../../src/machine/tool-paths.ts"],"names":[],"mappings":"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"}
|
package/dist/public/spec.d.ts
CHANGED
|
@@ -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. */
|
package/dist/public/spec.js
CHANGED
|
@@ -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,
|
package/dist/public/spec.js.map
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
`uploadFiles
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
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
|
|
642
|
-
besides the text methods. The plain agent
|
|
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
|
|
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.
|