@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.
Files changed (111) hide show
  1. package/README.md +8 -4
  2. package/code/pi-extension/src/outfitter-extension.js +155 -65
  3. package/code/pi-extension/src/outfitter-runtime-extension.js +41 -25
  4. package/dist/cli/OutfitterCli.js +2 -0
  5. package/dist/cli/OutfitterCli.js.map +1 -1
  6. package/dist/cli/commands/DumpCommand.js +2 -2
  7. package/dist/cli/commands/DumpCommand.js.map +1 -1
  8. package/dist/cli/commands/LinkCommand.d.ts +27 -0
  9. package/dist/cli/commands/LinkCommand.js +137 -0
  10. package/dist/cli/commands/LinkCommand.js.map +1 -0
  11. package/dist/cli/commands/ListCommand.d.ts +2 -0
  12. package/dist/cli/commands/ListCommand.js +32 -8
  13. package/dist/cli/commands/ListCommand.js.map +1 -1
  14. package/dist/cli/commands/PiRuntimeLaunch.d.ts +6 -0
  15. package/dist/cli/commands/PiRuntimeLaunch.js +11 -1
  16. package/dist/cli/commands/PiRuntimeLaunch.js.map +1 -1
  17. package/dist/cli/commands/RunAgentCommand.d.ts +2 -0
  18. package/dist/cli/commands/RunAgentCommand.js +36 -14
  19. package/dist/cli/commands/RunAgentCommand.js.map +1 -1
  20. package/dist/cli/commands/SetupCommand.d.ts +22 -1
  21. package/dist/cli/commands/SetupCommand.js +97 -8
  22. package/dist/cli/commands/SetupCommand.js.map +1 -1
  23. package/dist/cli/commands/ValidateCommand.js +4 -1
  24. package/dist/cli/commands/ValidateCommand.js.map +1 -1
  25. package/dist/cli.js +14 -6
  26. package/dist/cli.js.map +1 -1
  27. package/dist/composer/Chain.d.ts +10 -0
  28. package/dist/composer/Chain.js +47 -0
  29. package/dist/composer/Chain.js.map +1 -0
  30. package/dist/composer/Composer.d.ts +6 -0
  31. package/dist/composer/Composer.js +42 -141
  32. package/dist/composer/Composer.js.map +1 -1
  33. package/dist/composer/Composition.d.ts +16 -0
  34. package/dist/composer/Defaults.d.ts +33 -0
  35. package/dist/composer/Defaults.js +103 -0
  36. package/dist/composer/Defaults.js.map +1 -0
  37. package/dist/composer/Mcp.d.ts +3 -0
  38. package/dist/composer/Mcp.js +68 -0
  39. package/dist/composer/Mcp.js.map +1 -0
  40. package/dist/dump/Dump.d.ts +2 -1
  41. package/dist/dump/Dump.js +67 -4
  42. package/dist/dump/Dump.js.map +1 -1
  43. package/dist/dump/WorkflowDump.d.ts +9 -1
  44. package/dist/dump/WorkflowDump.js +7 -3
  45. package/dist/dump/WorkflowDump.js.map +1 -1
  46. package/dist/links/HarnessHome.d.ts +15 -0
  47. package/dist/links/HarnessHome.js +23 -0
  48. package/dist/links/HarnessHome.js.map +1 -0
  49. package/dist/links/HarnessLinkApply.d.ts +26 -0
  50. package/dist/links/HarnessLinkApply.js +356 -0
  51. package/dist/links/HarnessLinkApply.js.map +1 -0
  52. package/dist/links/HarnessLinkPlan.d.ts +70 -0
  53. package/dist/links/HarnessLinkPlan.js +224 -0
  54. package/dist/links/HarnessLinkPlan.js.map +1 -0
  55. package/dist/links/HarnessMcp.d.ts +9 -0
  56. package/dist/links/HarnessMcp.js +67 -0
  57. package/dist/links/HarnessMcp.js.map +1 -0
  58. package/dist/projection/CodexSettings.d.ts +3 -0
  59. package/dist/projection/CodexSettings.js +17 -0
  60. package/dist/projection/CodexSettings.js.map +1 -0
  61. package/dist/projection/Materialize.d.ts +20 -2
  62. package/dist/projection/Materialize.js +66 -33
  63. package/dist/projection/Materialize.js.map +1 -1
  64. package/dist/projection/ProjectHarness.js +58 -14
  65. package/dist/projection/ProjectHarness.js.map +1 -1
  66. package/dist/projection/Projection.d.ts +3 -1
  67. package/dist/resolver/ResolverValidation.d.ts +5 -0
  68. package/dist/resolver/ResolverValidation.js +45 -10
  69. package/dist/resolver/ResolverValidation.js.map +1 -1
  70. package/dist/resolver/WorkflowDefinition.d.ts +10 -0
  71. package/dist/resolver/WorkflowDefinition.js.map +1 -1
  72. package/dist/resolver/WorkflowOutput.d.ts +9 -0
  73. package/dist/resolver/WorkflowOutput.js +40 -0
  74. package/dist/resolver/WorkflowOutput.js.map +1 -0
  75. package/dist/schemas/settings.schema.json +48 -1
  76. package/dist/schemas/workflow.schema.json +26 -0
  77. package/dist/settings/Settings.d.ts +22 -0
  78. package/dist/settings/Settings.js +14 -0
  79. package/dist/settings/Settings.js.map +1 -1
  80. package/dist/settings/SettingsLoader.js +17 -0
  81. package/dist/settings/SettingsLoader.js.map +1 -1
  82. package/dist/settings/SettingsMerger.js +37 -0
  83. package/dist/settings/SettingsMerger.js.map +1 -1
  84. package/dist/setup/DefaultCatalog.d.ts +4 -2
  85. package/dist/setup/DefaultCatalog.js +5 -3
  86. package/dist/setup/DefaultCatalog.js.map +1 -1
  87. package/dist/setup/Setup.d.ts +11 -2
  88. package/dist/setup/Setup.js +51 -39
  89. package/dist/setup/Setup.js.map +1 -1
  90. package/dist/version/NodeVersionGuard.d.ts +13 -0
  91. package/dist/version/NodeVersionGuard.js +50 -0
  92. package/dist/version/NodeVersionGuard.js.map +1 -0
  93. package/docs/architecture/state_writeback_strategy.md +1 -1
  94. package/docs/documentation/README.md +1 -1
  95. package/docs/documentation/catalogs.md +36 -1
  96. package/docs/documentation/cli.md +42 -7
  97. package/docs/documentation/conventions.md +1 -1
  98. package/docs/documentation/dump-and-bake.md +1 -1
  99. package/docs/documentation/getting-started.md +4 -2
  100. package/docs/documentation/linking-harnesses.md +88 -0
  101. package/docs/documentation/local-development.md +5 -7
  102. package/docs/documentation/migration.md +1 -1
  103. package/docs/documentation/settings.md +68 -3
  104. package/docs/documentation/state.md +1 -1
  105. package/docs/documentation/support-matrix.md +3 -1
  106. package/docs/documentation/switching-to-outfitter.md +1 -1
  107. package/docs/documentation/usecases/shared-conventions.md +1 -1
  108. package/package.json +2 -1
  109. package/src/schemas/settings.schema.json +48 -1
  110. package/src/schemas/workflow.schema.json +26 -0
  111. 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`.