@ai-outfitter/outfitter 1.14.0 → 1.16.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.
- package/README.md +8 -4
- package/code/pi-extension/src/outfitter-extension.js +155 -65
- package/code/pi-extension/src/outfitter-runtime-extension.js +41 -25
- package/dist/cli/OutfitterCli.js +2 -0
- package/dist/cli/OutfitterCli.js.map +1 -1
- package/dist/cli/commands/DumpCommand.js +2 -2
- package/dist/cli/commands/DumpCommand.js.map +1 -1
- package/dist/cli/commands/LinkCommand.d.ts +27 -0
- package/dist/cli/commands/LinkCommand.js +137 -0
- package/dist/cli/commands/LinkCommand.js.map +1 -0
- package/dist/cli/commands/ListCommand.d.ts +2 -0
- package/dist/cli/commands/ListCommand.js +32 -8
- package/dist/cli/commands/ListCommand.js.map +1 -1
- package/dist/cli/commands/PiRuntimeLaunch.d.ts +6 -0
- package/dist/cli/commands/PiRuntimeLaunch.js +11 -1
- package/dist/cli/commands/PiRuntimeLaunch.js.map +1 -1
- package/dist/cli/commands/RunAgentCommand.d.ts +2 -0
- package/dist/cli/commands/RunAgentCommand.js +36 -14
- package/dist/cli/commands/RunAgentCommand.js.map +1 -1
- package/dist/cli/commands/SetupCommand.d.ts +22 -1
- package/dist/cli/commands/SetupCommand.js +97 -8
- package/dist/cli/commands/SetupCommand.js.map +1 -1
- package/dist/cli/commands/ValidateCommand.js +4 -1
- package/dist/cli/commands/ValidateCommand.js.map +1 -1
- package/dist/cli.js +14 -6
- package/dist/cli.js.map +1 -1
- package/dist/composer/Chain.d.ts +10 -0
- package/dist/composer/Chain.js +47 -0
- package/dist/composer/Chain.js.map +1 -0
- package/dist/composer/Composer.d.ts +6 -0
- package/dist/composer/Composer.js +42 -141
- package/dist/composer/Composer.js.map +1 -1
- package/dist/composer/Composition.d.ts +16 -0
- package/dist/composer/Defaults.d.ts +33 -0
- package/dist/composer/Defaults.js +103 -0
- package/dist/composer/Defaults.js.map +1 -0
- package/dist/composer/Mcp.d.ts +3 -0
- package/dist/composer/Mcp.js +68 -0
- package/dist/composer/Mcp.js.map +1 -0
- package/dist/dump/Dump.d.ts +2 -1
- package/dist/dump/Dump.js +67 -4
- package/dist/dump/Dump.js.map +1 -1
- package/dist/dump/WorkflowDump.d.ts +9 -1
- package/dist/dump/WorkflowDump.js +7 -3
- package/dist/dump/WorkflowDump.js.map +1 -1
- package/dist/links/HarnessHome.d.ts +15 -0
- package/dist/links/HarnessHome.js +23 -0
- package/dist/links/HarnessHome.js.map +1 -0
- package/dist/links/HarnessLinkApply.d.ts +26 -0
- package/dist/links/HarnessLinkApply.js +356 -0
- package/dist/links/HarnessLinkApply.js.map +1 -0
- package/dist/links/HarnessLinkPlan.d.ts +70 -0
- package/dist/links/HarnessLinkPlan.js +224 -0
- package/dist/links/HarnessLinkPlan.js.map +1 -0
- package/dist/links/HarnessMcp.d.ts +9 -0
- package/dist/links/HarnessMcp.js +67 -0
- package/dist/links/HarnessMcp.js.map +1 -0
- package/dist/projection/CodexSettings.d.ts +3 -0
- package/dist/projection/CodexSettings.js +17 -0
- package/dist/projection/CodexSettings.js.map +1 -0
- package/dist/projection/Materialize.d.ts +20 -2
- package/dist/projection/Materialize.js +66 -33
- package/dist/projection/Materialize.js.map +1 -1
- package/dist/projection/ProjectHarness.js +58 -14
- package/dist/projection/ProjectHarness.js.map +1 -1
- package/dist/projection/Projection.d.ts +3 -1
- package/dist/resolver/ResolverValidation.d.ts +5 -0
- package/dist/resolver/ResolverValidation.js +45 -10
- package/dist/resolver/ResolverValidation.js.map +1 -1
- package/dist/resolver/WorkflowDefinition.d.ts +10 -0
- package/dist/resolver/WorkflowDefinition.js.map +1 -1
- package/dist/resolver/WorkflowOutput.d.ts +9 -0
- package/dist/resolver/WorkflowOutput.js +40 -0
- package/dist/resolver/WorkflowOutput.js.map +1 -0
- package/dist/schemas/settings.schema.json +48 -1
- package/dist/schemas/workflow.schema.json +26 -0
- package/dist/settings/Settings.d.ts +22 -0
- package/dist/settings/Settings.js +14 -0
- package/dist/settings/Settings.js.map +1 -1
- package/dist/settings/SettingsLoader.js +17 -0
- package/dist/settings/SettingsLoader.js.map +1 -1
- package/dist/settings/SettingsMerger.js +37 -0
- package/dist/settings/SettingsMerger.js.map +1 -1
- package/dist/setup/DefaultCatalog.d.ts +4 -2
- package/dist/setup/DefaultCatalog.js +5 -3
- package/dist/setup/DefaultCatalog.js.map +1 -1
- package/dist/setup/Setup.d.ts +11 -2
- package/dist/setup/Setup.js +51 -39
- package/dist/setup/Setup.js.map +1 -1
- package/dist/version/NodeVersionGuard.d.ts +13 -0
- package/dist/version/NodeVersionGuard.js +50 -0
- package/dist/version/NodeVersionGuard.js.map +1 -0
- package/docs/architecture/state_writeback_strategy.md +1 -1
- package/docs/documentation/README.md +1 -1
- package/docs/documentation/catalogs.md +36 -1
- package/docs/documentation/cli.md +42 -7
- package/docs/documentation/conventions.md +1 -1
- package/docs/documentation/dump-and-bake.md +1 -1
- package/docs/documentation/getting-started.md +4 -2
- package/docs/documentation/linking-harnesses.md +88 -0
- package/docs/documentation/local-development.md +5 -7
- package/docs/documentation/migration.md +1 -1
- package/docs/documentation/settings.md +68 -3
- package/docs/documentation/state.md +1 -1
- package/docs/documentation/support-matrix.md +3 -1
- package/docs/documentation/switching-to-outfitter.md +1 -1
- package/docs/documentation/usecases/shared-conventions.md +1 -1
- package/package.json +2 -1
- package/src/schemas/settings.schema.json +48 -1
- package/src/schemas/workflow.schema.json +26 -0
- package/docs/documentation/porting-claude.md +0 -58
|
@@ -50,6 +50,32 @@
|
|
|
50
50
|
"checks": { "type": "object" },
|
|
51
51
|
"triggers": { "type": "array", "items": { "type": "object" } },
|
|
52
52
|
"feedback": { "type": "array", "items": { "type": "object", "required": ["from", "to"] } },
|
|
53
|
+
"outputs": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"propertyNames": { "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$" },
|
|
56
|
+
"additionalProperties": {
|
|
57
|
+
"oneOf": [
|
|
58
|
+
{
|
|
59
|
+
"type": "object",
|
|
60
|
+
"additionalProperties": false,
|
|
61
|
+
"required": ["from", "type"],
|
|
62
|
+
"properties": {
|
|
63
|
+
"from": { "type": "string" },
|
|
64
|
+
"type": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$" }
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"type": "object",
|
|
69
|
+
"additionalProperties": false,
|
|
70
|
+
"required": ["from", "output"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"from": { "type": "string" },
|
|
73
|
+
"output": { "type": "string" }
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
},
|
|
53
79
|
"nodes": {
|
|
54
80
|
"type": "array",
|
|
55
81
|
"minItems": 1,
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# Porting a Claude Code setup
|
|
2
|
-
|
|
3
|
-
If your agent configuration lives in `~/.claude`, Outfitter can port it into `~/.agents/` — the protocol's global layer — and symlink it back so Claude Code keeps working natively while the `.agents` tree becomes the source of truth.
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
outfitter setup
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Setup detects an existing `~/.claude` directory (when no `~/.agents/` tree exists yet) and offers the port. Nothing is destroyed: originals are moved, not copied-and-diverged, and the symlinks keep native Claude Code behavior identical.
|
|
10
|
-
|
|
11
|
-
## What gets ported
|
|
12
|
-
|
|
13
|
-
| `~/.claude` content | `~/.agents/` destination | Symlinked back? |
|
|
14
|
-
| ------------------------ | ------------------------ | --------------- |
|
|
15
|
-
| `agents/<id>.md` | `agents/<id>/agent.md` | Yes |
|
|
16
|
-
| `skills/<id>/` | `skills/<id>/` | Yes |
|
|
17
|
-
| `commands/` | `commands/` | Yes |
|
|
18
|
-
| `CLAUDE.md` | `agents.md` | Yes |
|
|
19
|
-
| MCP server configuration | `mcp.json` | Yes |
|
|
20
|
-
|
|
21
|
-
After the port, `~/.claude/skills` is a symlink into `~/.agents/skills`, and so on — Claude Code reads exactly what it read before, from the protocol tree. Editing either view edits the same files.
|
|
22
|
-
|
|
23
|
-
## What stays native
|
|
24
|
-
|
|
25
|
-
Runtime and account state is not configuration and stays in `~/.claude` untouched:
|
|
26
|
-
|
|
27
|
-
- auth and account state
|
|
28
|
-
- sessions and project history (`projects/`)
|
|
29
|
-
- plugins, caches, debug output
|
|
30
|
-
- `settings.json` — permissions, model, and hooks remain harness-native; see [Hooks](./hooks.md) for how hook wiring relates to the tree
|
|
31
|
-
|
|
32
|
-
This is the same boundary [state persistence](./state.md) enforces at run time: configuration lives in the tree, mutable state lives with the harness.
|
|
33
|
-
|
|
34
|
-
Staying native does not mean being ignored. A Claude run inherits this state by default, so the
|
|
35
|
-
permissions, hooks, plugins, trust, and MCP servers listed above apply to an Outfitter-launched
|
|
36
|
-
session exactly as they do to a native one. `--isolated` is what leaves them behind.
|
|
37
|
-
|
|
38
|
-
## After porting
|
|
39
|
-
|
|
40
|
-
Your resources are now protocol resources. Reference them by slug from an agent's loadout like anything else:
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
<!-- ~/.agents/agents/daily/agent.md -->
|
|
44
|
-
---
|
|
45
|
-
name: daily
|
|
46
|
-
skills: [wiki, code-review] # formerly ~/.claude/skills/*
|
|
47
|
-
---
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
- `outfitter list` shows everything that resolved from the ported tree.
|
|
51
|
-
- `outfitter run daily --harness claude` launches Claude Code through Outfitter with the same material, now composable with catalogs and other layers.
|
|
52
|
-
- Plain `claude` continues to work as before, through the symlinks.
|
|
53
|
-
|
|
54
|
-
Consider putting `~/.agents` under version control as a standalone repository — see [Local development](./local-development.md).
|
|
55
|
-
|
|
56
|
-
## Projects
|
|
57
|
-
|
|
58
|
-
The same port applies per project: a `<repo>/.claude` directory ports to `<repo>/.agents/` (the workspace layer) with symlinks back, and a `CLAUDE.md` at the repo root can become `.agents/agents.md`. Commit the `.agents/` tree; gitignore `.agents/settings.local.yml`.
|