@darkhorseprojects/circuitry 0.4.2 → 0.4.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
package/dist/yaml.d.ts CHANGED
@@ -1,11 +1,2 @@
1
- import { type CircuitryGraph, type CircuitryValidationStandard } from "./graph";
2
- export declare const parseYamlData: (text: string) => unknown;
3
- export declare const stringifyYamlData: (value: unknown) => string;
4
- export declare const parseCircuitryYaml: (text: string, standard?: CircuitryValidationStandard, options?: {
5
- validate?: boolean;
6
- }) => CircuitryGraph;
7
- export declare const stringifyCircuitryYaml: (graph: CircuitryGraph) => string;
8
- export declare const parseCircuitryText: (text: string, standard?: CircuitryValidationStandard, options?: {
9
- validate?: boolean;
10
- }) => CircuitryGraph;
11
- export declare const stringifyCircuitryText: (graph: CircuitryGraph) => string;
1
+ export declare function parseYamlData(text: string): unknown;
2
+ export declare function stringifyYamlData(value: unknown): string;
package/dist/yaml.js ADDED
@@ -0,0 +1,8 @@
1
+ import { parse, stringify } from "yaml";
2
+ export function parseYamlData(text) {
3
+ return parse(text);
4
+ }
5
+ export function stringifyYamlData(value) {
6
+ return stringify(value);
7
+ }
8
+ //# sourceMappingURL=yaml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.js","sourceRoot":"","sources":["../src/yaml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAExC,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,24 +1,27 @@
1
1
  circuitry: "0.4"
2
- title: Agent with prompt input
2
+ title: Research assistant
3
3
  inputs:
4
- user_turn:
4
+ question:
5
5
  type: text
6
6
  required: true
7
7
  entry: assistant
8
8
  resources:
9
- user_turn:
9
+ question:
10
10
  type: input
11
- from: user_turn
12
- guide:
11
+ from: question
12
+ system:
13
13
  type: text
14
- value: Be direct, accurate, and natural.
14
+ value: |
15
+ You are a careful research assistant.
15
16
  assistant:
16
17
  type: agent
17
- inputs: [guide, user_turn]
18
- tools: [read, write, bash, run_graph]
19
- instructions: Use the guide and answer the user.
20
- expect:
21
- response: str
18
+ identity: Researcher
19
+ inputs: [system, question]
20
+ tools: [read, search]
21
+ instructions: |
22
+ Answer with the smallest sufficient explanation.
23
+ output:
24
+ answer: str
22
25
  outputs:
23
- response:
24
- from: assistant.response
26
+ answer:
27
+ from: assistant.answer
@@ -0,0 +1,22 @@
1
+ circuitry: "0.4"
2
+ title: Context recovery
3
+ inputs:
4
+ question:
5
+ type: text
6
+ required: true
7
+ entry: recover
8
+ resources:
9
+ question:
10
+ type: input
11
+ from: question
12
+ recover:
13
+ type: agent
14
+ identity: Context recovery
15
+ inputs: [question]
16
+ instructions: |
17
+ Return only context relevant to the question.
18
+ output:
19
+ context: str
20
+ outputs:
21
+ context:
22
+ from: recover.context
@@ -1,13 +1,11 @@
1
1
  circuitry: "0.4"
2
- title: Imports and entries
2
+ title: Imports
3
3
  imports:
4
- - path: ./agent.circuitry.yaml
5
- resources: "*"
6
- prefix: imported_
7
- entry: imported_assistant
8
- entries:
9
- default: imported_assistant
10
- resources:
11
- local_note:
12
- type: text
13
- value: Local resource.
4
+ - path: ./shared.circuitry.yaml
5
+ resources:
6
+ system: base_system
7
+ entry: system
8
+ resources: {}
9
+ outputs:
10
+ system:
11
+ from: system
@@ -1,20 +1,11 @@
1
1
  circuitry: "0.4"
2
2
  title: Minimal
3
- inputs:
4
- user_turn:
5
- type: text
6
- required: true
7
- entry: assistant
3
+ entry: message
8
4
  resources:
9
- user_turn:
10
- type: input
11
- from: user_turn
12
- assistant:
13
- type: agent
14
- inputs: [user_turn]
15
- instructions: Answer the user.
16
- expect:
17
- response: str
5
+ message:
6
+ type: text
7
+ value: Hello from Circuitry.
8
+ x-demo-note: preserved runtime extension
18
9
  outputs:
19
- response:
20
- from: assistant.response
10
+ message:
11
+ from: message
@@ -0,0 +1,31 @@
1
+ circuitry: "0.4"
2
+ title: Assistant with graph run
3
+ inputs:
4
+ question:
5
+ type: text
6
+ required: true
7
+ entry: assistant
8
+ entries:
9
+ chat: assistant
10
+ recover: recovered_context
11
+ resources:
12
+ question:
13
+ type: input
14
+ from: question
15
+ recovered_context:
16
+ type: run
17
+ graph: ./context.circuitry.yaml
18
+ entry: recover
19
+ inputs:
20
+ question: question
21
+ output:
22
+ context: str
23
+ assistant:
24
+ type: agent
25
+ identity: Researcher
26
+ inputs: [question, recovered_context]
27
+ output:
28
+ answer: str
29
+ outputs:
30
+ answer:
31
+ from: assistant.answer
@@ -0,0 +1,6 @@
1
+ circuitry: "0.4"
2
+ title: Shared resources
3
+ resources:
4
+ base_system:
5
+ type: text
6
+ value: You are concise and careful.
package/package.json CHANGED
@@ -1,46 +1,40 @@
1
1
  {
2
2
  "name": "@darkhorseprojects/circuitry",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
+ "description": "A tiny file format and CLI for executable resource graphs.",
4
5
  "type": "module",
5
- "main": "./dist/index.js",
6
- "types": "./dist/index.d.ts",
6
+ "bin": {
7
+ "circuitry": "dist/cli.js"
8
+ },
7
9
  "exports": {
8
10
  ".": {
9
11
  "types": "./dist/index.d.ts",
10
12
  "import": "./dist/index.js"
11
- },
12
- "./resolve": {
13
- "types": "./dist/resolve.d.ts",
14
- "import": "./dist/resolve.js"
15
13
  }
16
14
  },
17
- "bin": {
18
- "circuitry": "./dist/cli.js"
19
- },
20
- "license": "MPL-2.0",
15
+ "repository": "https://github.com/darkhorseprojects/circuitry",
21
16
  "files": [
22
17
  "dist",
18
+ "README.md",
23
19
  "SPEC.md",
24
20
  "schema.json",
25
- "examples",
26
- "LICENSE"
21
+ "examples"
27
22
  ],
28
23
  "scripts": {
29
- "build": "node build.mjs",
30
- "prepublishOnly": "npm run build"
24
+ "build": "tsc -p tsconfig.json",
25
+ "test": "vitest run",
26
+ "check": "tsc -p tsconfig.json --noEmit && vitest run"
31
27
  },
32
- "publishConfig": {
33
- "access": "public"
28
+ "dependencies": {
29
+ "yaml": "^2.9.0"
34
30
  },
35
- "repository": {
36
- "type": "git",
37
- "url": "git+https://github.com/darkhorseprojects/circuitry.git"
38
- },
39
- "dependencies": {},
40
31
  "devDependencies": {
41
- "@types/node": "^20.11.0",
42
- "typescript": "^5.3.3",
43
- "yaml": "^2.8.4",
44
- "zod": "^3.25.76"
45
- }
32
+ "@types/node": "^22.15.30",
33
+ "typescript": "^5.8.3",
34
+ "vitest": "^3.1.4"
35
+ },
36
+ "engines": {
37
+ "node": ">=20"
38
+ },
39
+ "license": "MPL-2.0"
46
40
  }
package/schema.json CHANGED
@@ -1,31 +1,54 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://darkhorseprojects.github.io/circuitry/schema/0.4/schema.json",
3
+ "$id": "https://darkhorseprojects.github.io/circuitry/schema.json",
4
4
  "title": "Circuitry 0.4",
5
5
  "type": "object",
6
6
  "required": ["circuitry", "resources"],
7
+ "additionalProperties": true,
7
8
  "properties": {
8
9
  "circuitry": { "const": "0.4" },
9
10
  "title": { "type": "string" },
10
11
  "description": { "type": "string" },
11
- "imports": { "type": "array" },
12
- "inputs": { "type": "object" },
12
+ "imports": { "type": "array", "items": { "$ref": "#/$defs/import" } },
13
+ "inputs": { "type": "object", "additionalProperties": { "$ref": "#/$defs/input" } },
13
14
  "entry": { "type": "string" },
14
15
  "entries": { "type": "object", "additionalProperties": { "type": "string" } },
15
- "resources": {
16
+ "resources": { "type": "object", "additionalProperties": { "$ref": "#/$defs/resource" } },
17
+ "outputs": { "type": "object", "additionalProperties": { "$ref": "#/$defs/output" } }
18
+ },
19
+ "$defs": {
20
+ "import": {
16
21
  "type": "object",
17
- "additionalProperties": { "$ref": "#/$defs/resource" }
22
+ "required": ["path"],
23
+ "additionalProperties": false,
24
+ "properties": {
25
+ "path": { "type": "string" },
26
+ "resources": {
27
+ "oneOf": [
28
+ { "const": "*" },
29
+ { "type": "array", "items": { "type": "string" } },
30
+ { "type": "object", "additionalProperties": { "type": "string" } }
31
+ ]
32
+ },
33
+ "prefix": { "type": "string" }
34
+ }
18
35
  },
19
- "outputs": {
36
+ "input": {
20
37
  "type": "object",
21
- "additionalProperties": { "$ref": "#/$defs/output" }
22
- }
23
- },
24
- "additionalProperties": true,
25
- "$defs": {
38
+ "additionalProperties": true,
39
+ "properties": {
40
+ "type": { "type": "string" },
41
+ "required": { "type": "boolean" },
42
+ "default": {},
43
+ "label": { "type": "string" },
44
+ "description": { "type": "string" },
45
+ "mime": { "type": "string" }
46
+ }
47
+ },
26
48
  "resource": {
27
49
  "type": "object",
28
50
  "required": ["type"],
51
+ "additionalProperties": true,
29
52
  "properties": {
30
53
  "type": { "type": "string" },
31
54
  "label": { "type": "string" },
@@ -37,7 +60,7 @@
37
60
  ]
38
61
  },
39
62
  "from": { "type": "string" },
40
- "value": true,
63
+ "value": {},
41
64
  "path": { "type": "string" },
42
65
  "uri": { "type": "string" },
43
66
  "mime": { "type": "string" },
@@ -46,20 +69,19 @@
46
69
  "tools": { "type": "array", "items": { "type": "string" } },
47
70
  "graph": { "type": "string" },
48
71
  "entry": { "type": "string" },
49
- "expect": true
50
- },
51
- "additionalProperties": true
72
+ "output": {}
73
+ }
52
74
  },
53
75
  "output": {
54
76
  "type": "object",
55
77
  "required": ["from"],
78
+ "additionalProperties": true,
56
79
  "properties": {
57
80
  "from": { "type": "string" },
81
+ "schema": {},
58
82
  "type": { "type": "string" },
59
- "mime": { "type": "string" },
60
- "schema": true
61
- },
62
- "additionalProperties": true
83
+ "mime": { "type": "string" }
84
+ }
63
85
  }
64
86
  }
65
87
  }
@@ -1,24 +0,0 @@
1
- circuitry: "0.4"
2
- title: Run resource
3
- inputs:
4
- user_turn:
5
- type: text
6
- required: true
7
- entry: assistant
8
- resources:
9
- user_turn:
10
- type: input
11
- from: user_turn
12
- recovered_context:
13
- type: run
14
- graph: ./context-recovery.circuitry.yaml
15
- entry: recovery
16
- inputs:
17
- user_turn: user_turn
18
- assistant:
19
- type: agent
20
- inputs: [user_turn, recovered_context]
21
- instructions: Answer with recovered context when useful.
22
- outputs:
23
- response:
24
- from: assistant