aos-harness 0.8.1 → 0.8.2

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/README.md CHANGED
@@ -13,8 +13,15 @@
13
13
  ### 1. Install the CLI
14
14
 
15
15
  ```bash
16
- npm i -g aos-harness
17
- # or: bun add -g aos-harness
16
+ bun add -g aos-harness
17
+ # or: npm i -g aos-harness
18
+ ```
19
+
20
+ Or install it into the current project:
21
+
22
+ ```bash
23
+ bun add aos-harness
24
+ # or: npm install aos-harness
18
25
  ```
19
26
 
20
27
  ### 2. Install an adapter
@@ -29,10 +36,17 @@ Install the vendor CLI you want to drive first, then install the matching AOS ad
29
36
  Pick the AI CLI you'll drive agents with and install the matching adapter. You can install more than one. Versions are lockstep — pin the adapter to the same version as the CLI.
30
37
 
31
38
  ```bash
32
- npm i -g @aos-harness/claude-code-adapter # Anthropic's Claude Code
33
- npm i -g @aos-harness/gemini-adapter # Google's Gemini CLI
34
- npm i -g @aos-harness/codex-adapter # OpenAI's Codex CLI
35
- npm i -g @aos-harness/pi-adapter # Pi (https://pi.dev)
39
+ bun add -g @aos-harness/claude-code-adapter # Anthropic's Claude Code
40
+ bun add -g @aos-harness/gemini-adapter # Google's Gemini CLI
41
+ bun add -g @aos-harness/codex-adapter # OpenAI's Codex CLI
42
+ bun add -g @aos-harness/pi-adapter # Pi (https://pi.dev)
43
+ ```
44
+
45
+ Project-local adapter install also works:
46
+
47
+ ```bash
48
+ bun add @aos-harness/codex-adapter
49
+ # or: npm install @aos-harness/codex-adapter
36
50
  ```
37
51
 
38
52
  ### 3. Initialize and run
@@ -40,6 +54,10 @@ npm i -g @aos-harness/pi-adapter # Pi (https://pi.dev)
40
54
  ```bash
41
55
  # Initialize a project (writes .aos/ and copies core/ into the project)
42
56
  aos init
57
+ # local install via Bun
58
+ bunx aos init
59
+ # local install via npm
60
+ npx aos init
43
61
 
44
62
  # Or scan only in CI / automation
45
63
  aos init --non-interactive
@@ -0,0 +1,68 @@
1
+ schema: aos/agent/v1
2
+ id: artifact-renderer
3
+ name: Artifact Renderer
4
+ role: "Transforms structured concepts into polished HTML artifacts and galleries. Optimizes for fidelity, clarity, and self-contained output that survives outside the model context."
5
+
6
+ cognition:
7
+ objective_function: "Produce browser-viewable artifacts that are structurally correct, visually coherent, and easy for downstream tooling to package"
8
+ time_horizon:
9
+ primary: immediate
10
+ secondary: this session
11
+ peripheral: future reuse of the artifact and its layout patterns
12
+ core_bias: output-fidelity
13
+ risk_tolerance: moderate
14
+ default_stance: "Ship a complete artifact bundle, not a vague design description."
15
+
16
+ persona:
17
+ temperament:
18
+ - "Visual but disciplined — cares about aesthetics and the structural correctness required to render them"
19
+ - "Self-contained — avoids fragile external dependencies unless explicitly required"
20
+ - "Iterative — prefers clean first-pass structure that can be revised quickly"
21
+ thinking_patterns:
22
+ - "What files need to exist for this artifact to open cleanly in a browser?"
23
+ - "Which details belong in layout, which belong in content, and which belong in metadata?"
24
+ - "Can the output be previewed and packaged without extra manual cleanup?"
25
+ heuristics:
26
+ - name: Browser First
27
+ rule: "If a person double-clicks the output, it should render in a browser without additional assembly."
28
+ - name: Bundle Contract
29
+ rule: "When a workflow asks for multiple files, emit a structured bundle with explicit paths and complete file contents."
30
+ - name: Intentional Styling
31
+ rule: "Choose one strong visual direction and carry it through typography, color, spacing, and component treatment."
32
+ evidence_standard:
33
+ convinced_by:
34
+ - "Clear brief constraints, reference material, and explicit output contracts"
35
+ - "Specific variation axes and platform expectations"
36
+ - "Concrete revision feedback tied to rendering behavior"
37
+ not_convinced_by:
38
+ - "Vague requests for 'make it nicer' without a visual goal"
39
+ - "Instructions that imply hidden files or dependencies not represented in the artifact bundle"
40
+ red_lines:
41
+ - "Do not emit partial file bundles when the workflow clearly expects a complete artifact package"
42
+ - "Do not hide essential structure in prose; if a file is needed, output the file"
43
+
44
+ tensions:
45
+ - agent: sentinel
46
+ dynamic: "Visual ambition vs. accessibility rigor. The Artifact Renderer pushes for compelling presentation; the Sentinel tests whether the result is actually usable."
47
+
48
+ report:
49
+ structure: "State the artifact concept, then provide the output bundle in the exact structure requested. Call out any rendering limitations or assumptions after the bundle, not before."
50
+
51
+ tools: null
52
+ skills: []
53
+ expertise:
54
+ - path: expertise/artifact-renderer-notes.md
55
+ mode: read-write
56
+ use_when: "Track rendering patterns, artifact bundle conventions, and visual motifs that proved effective in prior sessions."
57
+
58
+ model:
59
+ tier: standard
60
+ thinking: "off"
61
+
62
+ capabilities:
63
+ can_execute_code: false
64
+ can_produce_files: true
65
+ can_review_artifacts: true
66
+ can_serve_artifacts: true
67
+ available_skills: []
68
+ output_types: [markdown, code, html]
@@ -0,0 +1,70 @@
1
+ # {{agent_name}}
2
+
3
+ ## Session: {{session_id}}
4
+ ## Agent: {{agent_id}}
5
+ ## Participants: {{participants}}
6
+ ## Constraints: {{constraints}}
7
+
8
+ ## Expertise
9
+ {{expertise_block}}
10
+
11
+ ## Deliberation Directory: {{deliberation_dir}}
12
+ ## Transcript: {{transcript_path}}
13
+
14
+ ## Brief
15
+ {{brief}}
16
+
17
+ ---
18
+
19
+ ## 1. Identity & Role
20
+
21
+ You are the **Artifact Renderer**.
22
+
23
+ Your job is to turn a brief or structured intermediate artifact into browser-ready HTML output. You do not stop at ideas or style directions. You produce complete, explicit deliverables that can be written to disk and previewed immediately.
24
+
25
+ {{role_override}}
26
+
27
+ ---
28
+
29
+ ## 2. Operating Principle
30
+
31
+ Default to a **bundle contract** whenever a workflow is asking for one or more artifacts. That means returning machine-readable JSON with explicit file paths and complete file contents.
32
+
33
+ Preferred bundle shape:
34
+
35
+ ```json
36
+ {
37
+ "title": "Human-readable artifact title",
38
+ "files": [
39
+ {
40
+ "path": "variation-01.html",
41
+ "format": "html-static",
42
+ "variation_index": 1,
43
+ "content": "<!doctype html>..."
44
+ }
45
+ ]
46
+ }
47
+ ```
48
+
49
+ If the workflow asks for a single standalone artifact, you may return one HTML file in the bundle with `path: "index.html"`. If the workflow explicitly asks for raw HTML only, return raw HTML and nothing else.
50
+
51
+ ---
52
+
53
+ ## 3. Rendering Rules
54
+
55
+ - Every HTML artifact must be self-contained. Inline CSS and lightweight JS when needed.
56
+ - Prefer semantic HTML over div soup.
57
+ - If a gallery or multi-variation output is requested, every variation gets its own file.
58
+ - Do not rely on external CDNs or asset hosts unless the brief explicitly allows them.
59
+ - Make intentional visual choices. Avoid generic gray-box layouts unless the brief calls for wireframes.
60
+ - If a platform chrome or product frame is requested, render the illusion convincingly enough that a browser preview communicates the concept immediately.
61
+
62
+ ---
63
+
64
+ ## 4. Output Discipline
65
+
66
+ - Put essential structure in files, not explanatory prose.
67
+ - If you must note an assumption, append a short `notes` field after the files rather than interrupting the bundle.
68
+ - Preserve stable file naming so revision loops can overwrite predictably.
69
+
70
+ Your standard is not "described well." Your standard is "opens cleanly."
@@ -0,0 +1,83 @@
1
+ schema: aos/profile/v1
2
+ id: design-variations
3
+ name: Design Variations Generator
4
+ description: "Generate multiple visual variations of a target component or surface and package them as a browser-viewable artifact gallery."
5
+ version: 1.0.0
6
+
7
+ assembly:
8
+ orchestrator: arbiter
9
+ perspectives:
10
+ - agent: artifact-renderer
11
+ required: true
12
+ role_override: "Generate distinct visual variations of the requested target and return them as a structured HTML artifact bundle."
13
+ - agent: sentinel
14
+ required: false
15
+ role_override: "Review rendered variations for contrast, clarity, and obvious accessibility issues."
16
+ - agent: provocateur
17
+ required: false
18
+ structural_advantage: speaks-last
19
+ role_override: "Challenge whether the variation set actually explores the requested design space."
20
+
21
+ delegation:
22
+ default: targeted
23
+ opening_rounds: 0
24
+ bias_limit: 3
25
+ tension_pairs: []
26
+
27
+ constraints:
28
+ time:
29
+ min_minutes: 3
30
+ max_minutes: 15
31
+ budget: null
32
+ rounds:
33
+ min: 2
34
+ max: 6
35
+
36
+ error_handling:
37
+ agent_timeout_seconds: 120
38
+ retry_policy:
39
+ max_retries: 1
40
+ backoff: linear
41
+ on_agent_failure: skip
42
+ on_orchestrator_failure: save_transcript_and_exit
43
+ partial_results: include_with_status_flag
44
+
45
+ budget_estimation: null
46
+
47
+ input:
48
+ format: brief
49
+ required_sections:
50
+ - heading: "## Target Component"
51
+ guidance: "What component, page section, or artifact should be varied? Include URLs, screenshots, or textual description."
52
+ - heading: "## Variation Axis"
53
+ guidance: "What should vary: theme, density, hierarchy, tone, layout, or another explicit visual axis."
54
+ - heading: "## Count"
55
+ guidance: "How many variations should be generated. Default: 6."
56
+ context_files: true
57
+
58
+ output:
59
+ format: artifact-gallery
60
+ path_template: "output/artifacts/{{date}}-design-variations-{{session_id}}/"
61
+ artifacts:
62
+ - type: html_gallery
63
+ frontmatter:
64
+ - date
65
+ - participants
66
+ - brief_path
67
+
68
+ runtime_requirements:
69
+ serve: false
70
+ channels: false
71
+ mempalace: false
72
+
73
+ expertise:
74
+ enabled: false
75
+ path_template: "expertise/{{agent_id}}-notes.md"
76
+ mode: none
77
+
78
+ controls:
79
+ halt: true
80
+ wrap: true
81
+ interject: false
82
+
83
+ workflow: design-variations-workflow
@@ -120,6 +120,11 @@
120
120
  "default": true,
121
121
  "description": "Can this agent review another agent's output and provide structured feedback?"
122
122
  },
123
+ "can_serve_artifacts": {
124
+ "type": "boolean",
125
+ "default": false,
126
+ "description": "Can this agent produce artifact output intended for preview-serving workflows?"
127
+ },
123
128
  "available_skills": {
124
129
  "type": "array",
125
130
  "items": { "type": "string" },
@@ -130,7 +135,7 @@
130
135
  "type": "array",
131
136
  "items": {
132
137
  "type": "string",
133
- "enum": ["text", "markdown", "code", "diagram", "structured-data"]
138
+ "enum": ["text", "markdown", "code", "diagram", "structured-data", "html"]
134
139
  },
135
140
  "default": ["text", "markdown"],
136
141
  "description": "What artifact formats this agent can produce."
@@ -26,13 +26,27 @@
26
26
  },
27
27
  "format": {
28
28
  "type": "string",
29
- "enum": ["markdown", "code", "structured-data", "diagram"],
29
+ "enum": ["markdown", "code", "structured-data", "diagram", "html-static", "html-interactive", "html-live"],
30
30
  "description": "The artifact's content format."
31
31
  },
32
32
  "content_path": {
33
33
  "type": "string",
34
34
  "description": "Path to the artifact's content file, relative to the session directory. Supports {{deliberation_dir}} template variable."
35
35
  },
36
+ "platform": {
37
+ "type": "string",
38
+ "enum": ["linkedin", "twitter", "tiktok", "instagram", "generic"],
39
+ "description": "Optional platform tag for social/content artifacts."
40
+ },
41
+ "variation_index": {
42
+ "type": "integer",
43
+ "minimum": 1,
44
+ "description": "1-indexed variation number for multi-variation artifact runs."
45
+ },
46
+ "channel_id": {
47
+ "type": "string",
48
+ "description": "Reserved for html-live artifacts using bidirectional channels."
49
+ },
36
50
  "metadata": {
37
51
  "type": "object",
38
52
  "properties": {
@@ -110,13 +110,22 @@
110
110
  "type": "object",
111
111
  "required": ["format", "path_template"],
112
112
  "properties": {
113
- "format": { "enum": ["memo", "report", "checklist", "execution-package", "freeform"] },
113
+ "format": { "enum": ["memo", "report", "checklist", "execution-package", "freeform", "artifact-gallery"] },
114
114
  "path_template": { "type": "string" },
115
115
  "sections": { "type": "array", "items": { "type": "string" } },
116
116
  "artifacts": { "type": "array", "items": { "type": "object" } },
117
117
  "frontmatter": { "type": "array", "items": { "type": "string" } }
118
118
  }
119
119
  },
120
+ "runtime_requirements": {
121
+ "type": "object",
122
+ "properties": {
123
+ "serve": { "type": "boolean", "default": false },
124
+ "channels": { "type": "boolean", "default": false },
125
+ "mempalace": { "type": "boolean", "default": false }
126
+ },
127
+ "additionalProperties": false
128
+ },
120
129
  "error_handling": {
121
130
  "type": "object",
122
131
  "properties": {
@@ -0,0 +1,70 @@
1
+ schema: aos/workflow/v1
2
+ id: design-variations-workflow
3
+ name: Design Variations Gallery
4
+ description: "Expand a variation brief, then render a structured HTML bundle containing multiple visual directions for the target."
5
+
6
+ steps:
7
+ - id: brief-expansion
8
+ name: Brief Expansion
9
+ action: targeted-delegation
10
+ agents: [artifact-renderer]
11
+ prompt: |
12
+ Analyze the target component and requested variation axis.
13
+
14
+ Return a structured JSON object with:
15
+ - `target_summary`
16
+ - `variation_axis`
17
+ - `count`
18
+ - `variations`: an array of variation specs where each entry names the
19
+ direction, what changes, what stays constant, and the intended mood.
20
+ output: variation_specs
21
+ review_gate: true
22
+
23
+ - id: render-gallery
24
+ name: Render Gallery
25
+ action: targeted-delegation
26
+ agents: [artifact-renderer]
27
+ input: [variation_specs]
28
+ prompt: |
29
+ Render the approved variation specs as a structured artifact bundle.
30
+
31
+ Return JSON with this exact shape:
32
+ {
33
+ "title": "Design Variations",
34
+ "files": [
35
+ {
36
+ "path": "variation-01.html",
37
+ "format": "html-static",
38
+ "variation_index": 1,
39
+ "content": "<!doctype html>..."
40
+ }
41
+ ]
42
+ }
43
+
44
+ Requirements:
45
+ - One standalone HTML file per variation
46
+ - No external dependencies
47
+ - Each variation clearly reflects its assigned direction
48
+ - Do not include markdown fences around the JSON
49
+ output: artifact_gallery
50
+ review_gate: false
51
+
52
+ - id: accessibility-review
53
+ name: Accessibility Review
54
+ action: targeted-delegation
55
+ agents: [sentinel]
56
+ input: [artifact_gallery]
57
+ prompt: |
58
+ Review the rendered variation bundle for:
59
+ - Contrast issues
60
+ - Readability issues
61
+ - Obvious accessibility regressions
62
+ Return concise findings grouped by variation path.
63
+ output: a11y_report
64
+ review_gate: false
65
+
66
+ gates:
67
+ - after: brief-expansion
68
+ type: user-approval
69
+ prompt: "Do these variation directions cover the design space you want explored?"
70
+ on_rejection: retry_with_feedback
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aos-harness",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "Agentic Orchestration System — assemble AI agents into deliberation and execution teams",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -38,18 +38,18 @@
38
38
  "test": "bun run src/index.ts validate"
39
39
  },
40
40
  "dependencies": {
41
- "@aos-harness/adapter-shared": "0.8.1",
42
- "@aos-harness/runtime": "0.8.1",
41
+ "@aos-harness/adapter-shared": "0.8.2",
42
+ "@aos-harness/runtime": "0.8.2",
43
43
  "@clack/prompts": "^1.2.0",
44
44
  "@modelcontextprotocol/sdk": "^1.29.0",
45
45
  "js-yaml": "^4.1.0",
46
46
  "yaml": "^2.8.3"
47
47
  },
48
48
  "peerDependencies": {
49
- "@aos-harness/claude-code-adapter": ">=0.8.1 <1.0.0",
50
- "@aos-harness/codex-adapter": ">=0.8.1 <1.0.0",
51
- "@aos-harness/gemini-adapter": ">=0.8.1 <1.0.0",
52
- "@aos-harness/pi-adapter": ">=0.8.1 <1.0.0"
49
+ "@aos-harness/claude-code-adapter": ">=0.8.2 <1.0.0",
50
+ "@aos-harness/codex-adapter": ">=0.8.2 <1.0.0",
51
+ "@aos-harness/gemini-adapter": ">=0.8.2 <1.0.0",
52
+ "@aos-harness/pi-adapter": ">=0.8.2 <1.0.0"
53
53
  },
54
54
  "peerDependenciesMeta": {
55
55
  "@aos-harness/claude-code-adapter": {