@ai-outfitter/outfitter 1.8.0 → 1.9.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 CHANGED
@@ -94,7 +94,7 @@ The [documentation index](./docs/documentation/README.md) follows the same arc
94
94
  - **Start:** [Getting started](./docs/documentation/getting-started.md) · [First-time CLI agent users](./docs/documentation/first-time-cli-agent-users.md) · [Switching to Outfitter](./docs/documentation/switching-to-outfitter.md)
95
95
  - **Understand:** [Concepts](./docs/documentation/concepts.md) · [Agents](./docs/documentation/agents.md) · [Skills](./docs/documentation/skills.md) · [Personas](./docs/documentation/personas.md) · [Subagents and delegation](./docs/documentation/subagents.md)
96
96
  - **Share:** [Catalogs](./docs/documentation/catalogs.md) · [Conventions](./docs/documentation/conventions.md) · [Organization catalog](./docs/documentation/usecases/organization-profile-catalog.md) · [Best practices](./docs/documentation/best-practices.md)
97
- - **Automate:** [GitHub Actions](./docs/documentation/actions.md) · [Recurring runs](./docs/documentation/recurring-runs.md) · [In-cluster agents](./docs/documentation/in-cluster.md) · [Hooks](./docs/documentation/hooks.md) · [State persistence](./docs/documentation/state.md)
97
+ - **Automate:** [GitHub Actions](./docs/documentation/actions.md) · [Recurring runs](./docs/documentation/recurring-runs.md) · [Cost estimation](./docs/documentation/cost-estimation.md) · [In-cluster agents](./docs/documentation/in-cluster.md) · [Hooks](./docs/documentation/hooks.md) · [State persistence](./docs/documentation/state.md)
98
98
  - **Reference:** [CLI](./docs/documentation/cli.md) · [Settings](./docs/documentation/settings.md) · [Adapter support matrix](./docs/documentation/support-matrix.md) · [Philosophy](./docs/philosophy.md)
99
99
 
100
100
  Use cases, story first:
@@ -5,16 +5,16 @@
5
5
  "type": "object",
6
6
  "required": ["name"],
7
7
  "properties": {
8
- "name": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 64 },
8
+ "name": { "$ref": "#/$defs/agentSlug" },
9
9
  "label": { "type": "string", "minLength": 1 },
10
10
  "description": { "type": "string" },
11
11
  "inherits": {
12
12
  "oneOf": [
13
- { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 64 },
13
+ { "$ref": "#/$defs/agentSlug" },
14
14
  {
15
15
  "type": "array",
16
16
  "minItems": 1,
17
- "items": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 64 }
17
+ "items": { "$ref": "#/$defs/agentSlug" }
18
18
  }
19
19
  ],
20
20
  "description": "Parent agent slug or ordered parent slug list composed parent-first before this agent."
@@ -36,7 +36,7 @@
36
36
  "description": "Skill slugs resolved from agents/<name>/skills first, then catalog-wide skills."
37
37
  },
38
38
  "subagents": {
39
- "$ref": "#/$defs/slugList",
39
+ "$ref": "#/$defs/agentSlugList",
40
40
  "description": "Agent slugs delegated to. Resolved catalog-wide (a delegate is a shared agent, not nested under agents/<name>)."
41
41
  },
42
42
  "mcp": {
@@ -64,6 +64,15 @@
64
64
  },
65
65
  "additionalProperties": true,
66
66
  "$defs": {
67
+ "agentSlug": {
68
+ "type": "string",
69
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*(?:\\.[a-z0-9]+(?:-[a-z0-9]+)*)*$",
70
+ "maxLength": 64
71
+ },
72
+ "agentSlugList": {
73
+ "type": "array",
74
+ "items": { "$ref": "#/$defs/agentSlug" }
75
+ },
67
76
  "toolName": {
68
77
  "type": "string",
69
78
  "minLength": 1,
@@ -17,15 +17,18 @@ const appendTelemetrySettingsHint = (content) => {
17
17
  };
18
18
  const defaultAgentSlug = 'assistant';
19
19
  const maxSlugLength = 64;
20
- const agentSlugPattern = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
20
+ const agentSlugPattern = /^[a-z0-9]+(?:-[a-z0-9]+)*(?:\.[a-z0-9]+(?:-[a-z0-9]+)*)*$/;
21
21
  export const sanitizeAgentSlug = (raw) => {
22
22
  const slug = raw
23
23
  .trim()
24
24
  .toLowerCase()
25
- .replace(/[^a-z0-9]+/g, '-')
26
- .replace(/^-+|-+$/g, '')
25
+ .replace(/[^a-z0-9.-]+/g, '-')
26
+ .split('.')
27
+ .map((segment) => segment.replace(/-+/g, '-').replace(/^-+|-+$/g, ''))
28
+ .filter((segment) => segment.length > 0)
29
+ .join('.')
27
30
  .slice(0, maxSlugLength)
28
- .replace(/-+$/g, '');
31
+ .replace(/[.-]+$/g, '');
29
32
  return agentSlugPattern.test(slug) ? slug : defaultAgentSlug;
30
33
  };
31
34
  const readFrontmatterValue = (content, key) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Setup.js","sourceRoot":"","sources":["../../src/setup/Setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Setup.js","sourceRoot":"","sources":["../../src/setup/Setup.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,6FAA6F;AAC7F,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AA0C3D,MAAM,CAAC,MAAM,oBAAoB,GAC/B,0KAA0K,CAAC;AAE7K,MAAM,qBAAqB,GAAG;IAC5B,kEAAkE;IAClE,cAAc;IACd,oBAAoB;CACrB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,2BAA2B,GAAG,CAAC,OAAe,EAAU,EAAE;IAC9D,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5D,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,qBAAqB,IAAI,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,WAAW,CAAC;AACrC,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,gBAAgB,GAAG,2DAA2D,CAAC;AAErF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAU,EAAE;IACvD,MAAM,IAAI,GAAG,GAAG;SACb,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SACrE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SACvC,IAAI,CAAC,GAAG,CAAC;SACT,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE1B,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAE,GAAW,EAAsB,EAAE;IAChF,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,gBAAgB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtE,yFAAyF;IACzF,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;QACf,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACxB,IAAI,EAAE;SACN,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAsB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AAE/G,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAA+B,EAAE;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,IAAI,OAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAA+B,EAAE;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;gBAAE,OAAO,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,EAAE,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;YAC7E,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC1D,OAAO;gBACL;oBACE,EAAE;oBACF,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE;oBACnF,WAAW,EAAE,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,6CAA6C;iBAC3G;aACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAClC,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAEzC,EAA+B,EAAE;IAChC,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACtD,OAAO,uBAAuB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE,CAClE,eAAe,IAAI,cAAc,KAAK,6DAA6D,KAAK,MAAM;IAC9G,sGAAsG,CAAC;AAEzG,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAE,GAAW,EAAE,KAAa,EAAU,EAAE;IACpF,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;IACvF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,OAAe,EAAU,EAAE;IAC7D,MAAM,WAAW,GAAG,CAAC,eAAe,oBAAoB,CAAC,MAAM,EAAE,EAAE,YAAY,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3G,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAClF,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QAAE,GAAG,IAAI,CAAC,CAAC;IACpG,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/C,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;YAAE,OAAO,KAAK,CAAC;QACjD,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,KAAK,oBAAoB,CAAC,MAAM,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;QAC3C,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC5B,OAAO,QAAQ,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAAE,QAAQ,IAAI,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC;;QAC3E,KAAK,CAAC,QAAQ,CAAC,GAAG,YAAY,oBAAoB,CAAC,GAAG,EAAE,CAAC;IAC9D,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;IACtD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAE,SAAyB,EAAU,EAAE;IACpF,IAAI,SAAS,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,2BAA2B,CAChC;YACE,oBAAoB,SAAS,CAAC,OAAO,EAAE;YACvC,kBAAkB;YAClB,YAAY,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACjD,wBAAwB;YACxB,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,2BAA2B,CAChC;YACE,GAAG,CAAC,SAAS,CAAC,sBAAsB,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM;gBACjE,CAAC,CAAC,CAAC,aAAa,EAAE,0BAA0B,CAAC;gBAC7C,CAAC,CAAC,EAAE,CAAC;YACP,oBAAoB,SAAS,CAAC,OAAO,EAAE;YACvC,kBAAkB;YAClB,eAAe,SAAS,CAAC,MAAM,EAAE;YACjC,YAAY,SAAS,CAAC,GAAG,EAAE;YAC3B,aAAa,SAAS,CAAC,YAAY,EAAE;YACrC,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/E,OAAO,2BAA2B,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACxH,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAU,EAAE;IACxD,IAAI,oCAAoC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACvE,IAAI,8CAA8C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,OAAO,OAAO,CAAC,OAAO,CAAC,8CAA8C,EAAE,0BAA0B,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,uCAAuC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,yCAAyC,CAAC;AACtH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAAe,EAAQ,EAAE;IAC1D,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,GAAG,IAAI,cAAc,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACpG,IAAI,CAAC;QACH,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAiB,EAAQ,EAAE;IAClD,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IACE,CAAC,SAAS,CAAC,GAAG;YACd,CAAC,SAAS,CAAC,YAAY;YACvB,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;YACtC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EACrC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IACD,2FAA2F;IAC3F,mGAAmG;IACnG,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,KAAK,CAAC,qCAAqC,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS;YACxC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAiB,EAAe,EAAE;IACpE,eAAe,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACpG,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,gBAAoC,CAAC;IACzC,IAAI,uBAA2C,CAAC;IAChD,IAAI,0BAA0B,GAAG,KAAK,CAAC;IACvC,IAAI,2BAA2B,GAAG,EAAE,CAAC;IAErC,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,OAAQ,EAAE,UAAU,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,WAAW,CACT,SAAS,EACT,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,OAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,OAAQ,CAAC,CAC9G,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,gBAAgB,GAAG,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,IACE,KAAK,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS;YACvC,KAAK,CAAC,SAAS,CAAC,sBAAsB,KAAK,IAAI;YAC/C,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,EACpC,CAAC;YACD,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAC/E,0BAA0B,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC;YACjE,2BAA2B,GAAG,0BAA0B,CAAC,CAAC,CAAC,YAAY,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9G,WAAW,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACzF,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,eAAe,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,gBAAgB,GAAG,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,WAAW,CAAC,YAAY,EAAE,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACpF,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,gBAAgB,KAAK,SAAS;YAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,0BAA0B;gBAAE,WAAW,CAAC,uBAAuB,EAAE,2BAA2B,CAAC,CAAC;;gBAC7F,MAAM,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO;QACP,OAAO;QACP,YAAY;QACZ,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;QACrC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;QACvC,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC;YAC3C,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC;YAC3C,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,kBAAkB,KAAK,CAAC,SAAS,CAAC,OAAO,oBAAoB,KAAK,CAAC,SAAS,CAAC,OAAO,6BAA6B;iBAClH,CAAC;SACP;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,10 @@
1
- /** PostHog project configuration. An empty key makes telemetry completely inert. */
2
- export declare const POSTHOG_API_KEY = "";
1
+ /**
2
+ * PostHog project configuration. An empty key makes telemetry completely inert.
3
+ *
4
+ * This is a PostHog project API key: write-only, safe to ship in client code, and useless for
5
+ * reading any project data. It belongs to the `ai-outfitter` organization, project 562393, on
6
+ * PostHog Cloud US — so `POSTHOG_HOST` must stay a US endpoint or events are accepted nowhere.
7
+ */
8
+ export declare const POSTHOG_API_KEY = "phc_v9FGDjtEC7h9UvLxHdJKaHFtFfMN7UZwpJ2weRTFoqvz";
3
9
  export declare const POSTHOG_HOST = "https://us.i.posthog.com";
4
10
  export declare const TELEMETRY_SHUTDOWN_BUDGET_MS = 1000;
@@ -1,5 +1,11 @@
1
- /** PostHog project configuration. An empty key makes telemetry completely inert. */
2
- export const POSTHOG_API_KEY = '';
1
+ /**
2
+ * PostHog project configuration. An empty key makes telemetry completely inert.
3
+ *
4
+ * This is a PostHog project API key: write-only, safe to ship in client code, and useless for
5
+ * reading any project data. It belongs to the `ai-outfitter` organization, project 562393, on
6
+ * PostHog Cloud US — so `POSTHOG_HOST` must stay a US endpoint or events are accepted nowhere.
7
+ */
8
+ export const POSTHOG_API_KEY = 'phc_v9FGDjtEC7h9UvLxHdJKaHFtFfMN7UZwpJ2weRTFoqvz';
3
9
  export const POSTHOG_HOST = 'https://us.i.posthog.com';
4
10
  export const TELEMETRY_SHUTDOWN_BUDGET_MS = 1000;
5
11
  //# sourceMappingURL=TelemetryConstants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TelemetryConstants.js","sourceRoot":"","sources":["../../src/telemetry/TelemetryConstants.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AACvD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"TelemetryConstants.js","sourceRoot":"","sources":["../../src/telemetry/TelemetryConstants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,kDAAkD,CAAC;AAClF,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AACvD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC"}
@@ -50,6 +50,7 @@ The same composition runs on every surface; only the trigger changes.
50
50
  - [Channels](./channels.md) — add external event sources that wake a resident agent only when work arrives.
51
51
  - [Container images](./containers.md) — run the published Debian-based image persistently, extend it with apt, or use the `-nix` variant.
52
52
  - [Recurring runs](./recurring-runs.md) — loops three ways: the local loop extension, Actions cron, cluster schedules.
53
+ - [Cost estimation](./cost-estimation.md) — one workload profile and model-cost line across local, Actions, and Kubernetes runs.
53
54
  - [In-cluster agents](./in-cluster.md) — resident agents, CronJobs, and subagent Jobs via Link Operator.
54
55
  - [Hooks](./hooks.md) — harness hook wiring, launcher-scope system observers, and the protocol gap.
55
56
  - [Dump](./dump-and-bake.md) — deterministic, self-contained `.agents/` dumps.
@@ -73,5 +74,6 @@ Each use case is a worked story — a problem, the composition that answers it,
73
74
 
74
75
  - [CLI reference](./cli.md)
75
76
  - [Telemetry](./telemetry.md)
77
+ - [Cost estimation](./cost-estimation.md)
76
78
  - [Migration from legacy profiles](./migration.md)
77
79
  - [Philosophy](../philosophy.md) — why Outfitter exists.
@@ -0,0 +1,466 @@
1
+ # Estimate agent workload cost
2
+
3
+ This table estimates what one agent that never stops costs in model tokens.
4
+ Every figure comes from a dated price book and an estimated token rate, not
5
+ from an invoice. The day column is 24 hours at the stated rate. The month
6
+ column is 730 hours, the average month.
7
+
8
+ | Provider | Model | Steady: day / month | Saturated: day / month |
9
+ | --------- | ---------------- | ------------------: | ---------------------: |
10
+ | Anthropic | Claude Fable 5 | $182.40 / $5,548 | $408.00 / $12,410 |
11
+ | OpenAI | GPT-5.6 Sol | $98.40 / $2,993 | $216.00 / $6,570 |
12
+ | Anthropic | Claude Opus 5 | $91.20 / $2,774 | $204.00 / $6,205 |
13
+ | OpenAI | GPT-5.6 Terra | $39.36 / $1,197 | $86.40 / $2,628 |
14
+ | Anthropic | Claude Sonnet 5 | $36.48 / $1,110 | $81.60 / $2,482 |
15
+ | Anthropic | Claude Haiku 4.5 | $18.24 / $555 | $40.80 / $1,241 |
16
+ | OpenAI | GPT-5.4 mini | $14.76 / $449 | $32.40 / $986 |
17
+ | OpenAI | GPT-5.6 Luna | $3.94 / $120 | $8.64 / $263 |
18
+
19
+ Four notes apply to every row:
20
+
21
+ - **The two rates.** Steady is ordinary agent turns with repeated instructions:
22
+ 400K input, 600K cache-read, and 60K output tokens for each active hour.
23
+ Saturated is continuous agentic coding with large tool results:
24
+ 1M / 2M / 100K.
25
+ - **Scope.** This is the model line only. It excludes substrate, tools,
26
+ subagents, and cache writes. See
27
+ [What this figure excludes](#what-this-figure-excludes).
28
+ - **Luna reserve.** Apply a five-times reserve to GPT-5.6 Luna until an invoice
29
+ settles its disputed price. That gives $19.68 / $599 steady and
30
+ $43.20 / $1,314 saturated.
31
+ - **Part-time agents.** Cost scales with active hours. Eight hours on each
32
+ working day is about 176 hours, which is 24 percent of the month column.
33
+
34
+ At the same token rate, GPT-5.6 Sol costs about 25 times GPT-5.6 Luna and
35
+ Claude Fable 5 costs about 46 times. Apply the Luna reserve and those spreads
36
+ fall to 5 and 9 times. Against Claude Haiku 4.5, the cheapest model with an
37
+ undisputed price, they are 5.4 and 10 times. The two rates change the cost of
38
+ one model by about 2.2 times. Model choice and work intensity are separate
39
+ controls.
40
+
41
+ This guide calculates a planning estimate. It does not read invoices or collect
42
+ usage. See
43
+ [Replace estimates with measurements](#replace-estimates-with-measurements) for
44
+ the record that can replace each estimate later.
45
+
46
+ ## Price book
47
+
48
+ Two providers, two capture dates. Prices are United States dollars for one
49
+ million text tokens.
50
+
51
+ OpenAI standard text-token prices, captured 2026-08-15 from the
52
+ [OpenAI model documentation](https://developers.openai.com/api/docs/models):
53
+
54
+ | Model | Documented role | Input | Cache read | Output |
55
+ | ------------- | ----------------------------------------------- | ----: | ---------: | -----: |
56
+ | GPT-5.6 Sol | Frontier tier | $5.00 | $0.50 | $30.00 |
57
+ | GPT-5.6 Terra | Balance of intelligence and cost | $2.00 | $0.20 | $12.00 |
58
+ | GPT-5.4 mini | High-volume coding, computer use, and subagents | $0.75 | $0.075 | $4.50 |
59
+ | GPT-5.6 Luna | Cost-sensitive, high-volume tier | $0.20 | $0.02 | $1.20 |
60
+
61
+ Anthropic standard text-token prices, captured 2026-08-17 from the
62
+ [Claude platform pricing page](https://platform.claude.com/docs/en/about-claude/pricing):
63
+
64
+ | Model | Documented role | Input | Cache read | Output |
65
+ | ---------------- | ------------------------------------------ | -----: | ---------: | -----: |
66
+ | Claude Fable 5 | Demanding reasoning and long-horizon work | $10.00 | $1.00 | $50.00 |
67
+ | Claude Opus 5 | Complex agentic coding and enterprise work | $5.00 | $0.50 | $25.00 |
68
+ | Claude Sonnet 5 | Balance of speed and intelligence | $2.00 | $0.20 | $10.00 |
69
+ | Claude Haiku 4.5 | Fastest and most cost-effective | $1.00 | $0.10 | $5.00 |
70
+
71
+ Three properties of these tables control every figure in this guide:
72
+
73
+ - The Anthropic price vectors are exactly proportional on every token class.
74
+ `Fable 5 : Opus 5 : Sonnet 5 : Haiku 4.5 = 10 : 5 : 2 : 1`. Therefore any
75
+ Anthropic figure in this guide scales by that ratio, whatever the token mix
76
+ is. Use this property to check the arithmetic.
77
+ - **Neither table contains a cache-write price, and both providers charge
78
+ one.** An OpenAI explicit cache write costs 1.25 times the uncached-input
79
+ price. An Anthropic cache write costs 1.25 times input for a 5-minute
80
+ lifetime and 2 times input for a 1-hour lifetime. Every figure in this guide
81
+ omits that line, so every figure understates the cost. See
82
+ [Correction from measured usage](#correction-from-measured-usage) for the
83
+ size of that error.
84
+ - **The GPT-5.6 Luna price is disputed.** The 2026-08-15 capture and a later
85
+ live re-check of the model catalog, the comparison page, and the Luna page
86
+ all gave $0.20 / $0.02 / $1.20. Official-domain search results crawled two
87
+ weeks earlier gave $1.00 / $0.10 / $6.00, which is five times more. No
88
+ invoice has settled it. That ratio is the five-times reserve this guide
89
+ applies to every Luna figure.
90
+
91
+ In the 2026-08-17 capture, the Claude Sonnet 5 introductory price of
92
+ $2.00 / $10.00 is the standard price, and a previously scheduled increase to
93
+ $3.00 / $15.00 is no longer listed. An estimate built on the increase is about
94
+ 50 percent too high.
95
+
96
+ ## How this figure is calculated
97
+
98
+ Three inputs produce every number in the table above: a dated price book, an
99
+ estimated token rate, and the active hours in the period.
100
+
101
+ ### Step 1 — select a token rate
102
+
103
+ The rate is the only estimated input. Two rates bound realistic agent work.
104
+ Both come from the workload profile, not from a measured ledger:
105
+
106
+ | Rate | Per active hour: input / cache read / output | Derivation |
107
+ | --------- | -------------------------------------------- | ---------------------------------------------------------------- |
108
+ | Steady | 400K / 600K / 60K | 100K / 150K / 15K for each run, 15 minutes each run, 4 each hour |
109
+ | Saturated | 1M / 2M / 100K | 500K / 1M / 50K for each run, 30 minutes each run, 2 each hour |
110
+
111
+ No observed provider record supplies these two rates. Every dollar figure in
112
+ this guide inherits that uncertainty.
113
+
114
+ ### Step 2 — calculate the cost of one active agent-hour
115
+
116
+ Apply the price book to the selected rate. For Claude Opus 5 at the steady
117
+ rate:
118
+
119
+ ```text
120
+ 400,000 input × $5.00 / 1,000,000 = $2.00
121
+ + 600,000 cache read × $0.50 / 1,000,000 = $0.30
122
+ + 60,000 output × $25.00 / 1,000,000 = $1.50
123
+ -----
124
+ $3.80 per active agent-hour
125
+ ```
126
+
127
+ The general form, with cache writes and reasoning, is in
128
+ [Calculate model cost once](#calculate-model-cost-once). The same calculation
129
+ for every model:
130
+
131
+ | Model | Steady | Saturated |
132
+ | ---------------- | -----: | --------: |
133
+ | Claude Fable 5 | $7.60 | $17.00 |
134
+ | GPT-5.6 Sol | $4.10 | $9.00 |
135
+ | Claude Opus 5 | $3.80 | $8.50 |
136
+ | GPT-5.6 Terra | $1.64 | $3.60 |
137
+ | Claude Sonnet 5 | $1.52 | $3.40 |
138
+ | Claude Haiku 4.5 | $0.76 | $1.70 |
139
+ | GPT-5.4 mini | $0.615 | $1.35 |
140
+ | GPT-5.6 Luna | $0.164 | $0.36 |
141
+
142
+ ### Step 3 — multiply by the active hours in the period
143
+
144
+ A non-stop agent is active for 24 hours on each day and 730 hours in each
145
+ month. For Claude Opus 5 at the steady rate:
146
+
147
+ ```text
148
+ $3.80 × 24 = $91.20 for one day
149
+ $3.80 × 730 = $2,774 for one month
150
+ ```
151
+
152
+ The table at the top of this guide applies these two multiplications to every
153
+ model.
154
+
155
+ ## What this figure excludes
156
+
157
+ The table at the top of this guide is the model line only. The full equation
158
+ has five more terms. The prices quoted below come from the same 2026-08-17
159
+ Anthropic capture as the price book.
160
+
161
+ - **Cache writes.** See the price book above. This is the one excluded term
162
+ with a measured size. See
163
+ [Correction from measured usage](#correction-from-measured-usage).
164
+ - **Substrate.** A non-stop agent holds compute for all 730 hours. Add the
165
+ hourly price of the node or pod. Claude Managed Agents prices this line
166
+ directly at $0.08 for each session-hour, which is $58.40 for a non-stop
167
+ month.
168
+ - **Tool fees.** Anthropic web search costs $10 for 1,000 searches. An agent
169
+ that searches once each minute non-stop adds $438 each month.
170
+ - **Subagents.** A coordinator that runs subagents multiplies the token rate by
171
+ its concurrency. These rates describe one serial thread.
172
+ - **Long-context and residency uplifts.** A GPT-5.6 request above 272,000 input
173
+ tokens can cost more. Anthropic `inference_geo: "us"` adds 1.1 times.
174
+
175
+ ## Correction from measured usage
176
+
177
+ One measured record exists, and it corrects the token mix that the estimate
178
+ assumes.
179
+
180
+ A single workstation retained 2,804 Claude Code session files covering 42
181
+ active days. Each assistant turn carries a `usage` object. Aggregating all
182
+ 221,609 turns gives 45.84 billion tokens with this composition:
183
+
184
+ | Token class | Assumed by the rates | Measured |
185
+ | -------------- | -------------------: | -------: |
186
+ | Uncached input | ~38% | 0.04% |
187
+ | Cache read | ~57% | 96.76% |
188
+ | Cache write | 0%, omitted | 2.82% |
189
+ | Output | ~6% | 0.39% |
190
+
191
+ Two corrections follow:
192
+
193
+ 1. **Uncached input is a rounding error.** Real agent work re-reads a cached
194
+ prefix on almost every turn. A cost model weighted toward uncached input
195
+ prices the wrong thing. Priced on Claude Opus 5, the measured mix costs
196
+ about 4.7 times less for each token than the steady rate does.
197
+ 2. **Cache writes are the second-largest cost line.** The 125,394 Claude Opus 5
198
+ turns in this record used 24.51B cache-read, 703M cache-write, 86M output,
199
+ and 2.08M uncached-input tokens. Priced on Claude Opus 5 and treating every
200
+ cache write as a 5-minute write, that is $12,255 cache read, $4,397 cache
201
+ write, $2,151 output, and $10 uncached input: 65, 23, 11, and 0.05 percent.
202
+ A table that omits a line of that size reports about 77 percent of the model
203
+ cost.
204
+
205
+ Correction 2 is worth about 1.3 times, and correction 1 about 4.7 times. Both
206
+ are smaller than the 25-times spread between model tiers, so model choice
207
+ remains the larger control. Neither correction transfers directly to the tables
208
+ above: the two rates assume no cache writes at all, so their cache-write error
209
+ is unknown rather than 23 percent.
210
+
211
+ This record measures one human driving agents interactively between 2026-07-05
212
+ and 2026-08-17. It does not measure a resident Deployment, and it is not a
213
+ provider invoice. Treat it as evidence about token composition, not as a price
214
+ for the non-stop case.
215
+
216
+ ## Evidence class for each number
217
+
218
+ | Value | Class | Basis |
219
+ | --------------------------- | ---------- | --------------------------------------------------------------- |
220
+ | Model prices | Price book | Dated public captures, 2026-08-15 and 2026-08-17 |
221
+ | 730 hours in a month | Convention | The [`730 / interval_hours` rule](#define-one-workload-profile) |
222
+ | The two token rates | Estimated | Workload profile assumptions, no ledger |
223
+ | Cost per hour and per month | Derived | Price book times the estimated rate |
224
+ | Token-class composition | Measured | 221,609 assistant turns over 42 days |
225
+ | GPT-5.6 Luna price | Disputed | $0.20 / $0.02 / $1.20 against $1.00 / $0.10 / $6.00, no invoice |
226
+ | Substrate and tool prices | Price book | The 2026-08-17 Anthropic capture |
227
+ | Every other excluded term | Unknown | Not zero |
228
+
229
+ A price-book calculation is not an observed provider charge. An unknown value
230
+ is not zero.
231
+
232
+ ## Cost boundary
233
+
234
+ Use one workload profile for every execution surface. Change only the substrate
235
+ inputs when you compare a local run, GitHub Actions, a scheduled Kubernetes
236
+ Job, or a resident Deployment. Use this equation:
237
+
238
+ ```text
239
+ monthly cost =
240
+ fixed substrate cost
241
+ + runs × (model + tools + variable compute)
242
+ + storage
243
+ + network
244
+ ```
245
+
246
+ The terms mean:
247
+
248
+ | Term | Include |
249
+ | ---------------- | ------------------------------------------------------------------------------------- |
250
+ | Fixed substrate | Compute that accrues while no run is active. A resident Deployment is the usual case. |
251
+ | Runs | Every initial attempt, retry, and delegated run in the month. |
252
+ | Model | Input, cache-read, cache-write, output, and reasoning charges for one run. |
253
+ | Tools | Search, browser, image, sandbox, or other billable tool use for one run. |
254
+ | Variable compute | Runner minutes or Job resources that accrue only while a run is active. |
255
+ | Storage | Session data, artifacts, logs, volumes, and backups. |
256
+ | Network | Egress, gateways, and other billed transfer. |
257
+
258
+ An included quota changes the billed amount. It does not change usage. Record
259
+ the usage before you apply the quota.
260
+
261
+ ## Define one workload profile
262
+
263
+ Enter these values once:
264
+
265
+ | Input | Unit | Rule |
266
+ | ------------------------------- | ---------------- | ------------------------------------------------------------------ |
267
+ | Workload identity | stable text | Use the same identity on every surface. |
268
+ | Interval | hours | Use the time between scheduled starts. |
269
+ | Attempts per scheduled start | count | Include the first attempt and expected retries. |
270
+ | Delegated runs per attempt | count | Count each subagent or delegated Job separately. |
271
+ | Input tokens | tokens per run | Keep uncached input separate from cache reads. |
272
+ | Cache-read tokens | tokens per run | Use `null`, not zero, when the provider does not report them. |
273
+ | Cache-write tokens | tokens per run | Use `null`, not zero, when the provider does not report them. |
274
+ | Output tokens | tokens per run | Keep reasoning separate when the provider reports it separately. |
275
+ | Reasoning tokens | tokens per run | Use the provider's billing rule. Do not assume that they are free. |
276
+ | Billable tools | quantity per run | Name each unit and price source. |
277
+ | Active duration | minutes per run | Use this for variable compute. |
278
+ | Artifacts, storage, and network | provider units | Keep each provider line separate. |
279
+
280
+ Convert an interval to an average month with:
281
+
282
+ ```text
283
+ runs per month = 730 / interval_hours
284
+ ```
285
+
286
+ For example, one run every 24 hours gives `730 / 24 = 30.4167` scheduled
287
+ starts in an average month. A calendar-month report can use the actual count
288
+ instead. Label which method you use.
289
+
290
+ Then calculate the total attempt count:
291
+
292
+ ```text
293
+ attempts per month =
294
+ scheduled starts
295
+ × attempts per scheduled start
296
+ × (1 + delegated runs per attempt)
297
+ ```
298
+
299
+ Use the last factor only when every attempt creates that number of delegated
300
+ runs. If delegation varies, list the parent and child workloads separately.
301
+
302
+ ## Calculate model cost once
303
+
304
+ Use a price book with a source and an effective date. For a model with separate
305
+ text-token prices:
306
+
307
+ ```text
308
+ model cost per run =
309
+ input_tokens × input_price / 1,000,000
310
+ + cache_read_tokens × cache_read_price / 1,000,000
311
+ + cache_write_tokens × cache_write_price / 1,000,000
312
+ + output_tokens × output_price / 1,000,000
313
+ + provider-defined reasoning cost
314
+ ```
315
+
316
+ The same workload profile and price book MUST produce the same model line on
317
+ every execution surface. Do not recalculate model cost inside an Actions or
318
+ Kubernetes estimate.
319
+
320
+ Keep two cost fields when evidence is available:
321
+
322
+ - **Provider-reported cost** is the charge that the provider returned for the
323
+ exchange. Keep its amount and currency unchanged.
324
+ - **Price-book estimate** is a derived amount. Keep the source and effective
325
+ date with it.
326
+
327
+ Do not replace one with the other. Do not present a derived estimate as an
328
+ observed provider charge.
329
+
330
+ ## Worked case: one organization report each day
331
+
332
+ The example starts from an observed AI Outfitter organization-report flow. The
333
+ 2026-W32 report covered 16 repositories. Its KPI JSON was 21,020 bytes. Its
334
+ rendered Markdown was 11,719 bytes. Scripts collected and rendered the facts.
335
+ The model wrote only a short Highlights paragraph.
336
+
337
+ Those report dimensions are observed. The retained artifacts do not contain a
338
+ token total. Therefore, these token bands are estimated:
339
+
340
+ | Band | Input | Cache read | Output | Total per run |
341
+ | -------- | ------: | ---------: | -----: | ------------: |
342
+ | Compact | 10,000 | 20,000 | 2,000 | 32,000 |
343
+ | Expected | 25,000 | 75,000 | 5,000 | 105,000 |
344
+ | High | 100,000 | 300,000 | 15,000 | 415,000 |
345
+
346
+ All values use the OpenAI half of the [price book](#price-book) above. Keep the
347
+ base estimate and the five-times Luna reserve separate.
348
+
349
+ At `730 / 24 = 30.4167` runs per month, the model estimates are:
350
+
351
+ | Band | Monthly tokens | GPT-5.6 Sol | GPT-5.6 Terra | GPT-5.6 Luna | GPT-5.4 mini |
352
+ | -------- | -------------: | ----------: | ------------: | -----------: | -----------: |
353
+ | Compact | 0.973M | $3.65 | $1.46 | $0.15 | $0.55 |
354
+ | Expected | 3.194M | $9.51 | $3.80 | $0.38 | $1.43 |
355
+ | High | 12.623M | $33.46 | $13.38 | $1.34 | $5.02 |
356
+
357
+ The expected model cost is $0.313 for each run on Sol, $0.125 on Terra,
358
+ $0.013 on Luna, and $0.047 on GPT-5.4 mini. The five-times Luna reserve changes
359
+ its expected monthly planning line from $0.38 to $1.90.
360
+
361
+ These values exclude everything in
362
+ [What this figure excludes](#what-this-figure-excludes), and also tax.
363
+
364
+ This case sits far below the non-stop ceiling at the top of this guide, because
365
+ the model writes one paragraph and scripts do the rest.
366
+
367
+ ## Compare execution surfaces
368
+
369
+ Start with the same expected daily-report model line. Then add only the
370
+ surface-specific substrate.
371
+
372
+ | Surface | Fixed substrate | Variable compute |
373
+ | ------------------------------ | --------------------------------------------------------------- | --------------------------------------------------------------- |
374
+ | GitHub-hosted Actions | none for an otherwise idle workload | billable runner minutes after included quotas |
375
+ | Self-hosted Actions | allocated runner and operations cost | per-run cost when your allocation method charges it |
376
+ | Local run | allocated workstation cost, if the organization accounts for it | active process time, if the organization accounts for it |
377
+ | Scheduled Kubernetes Job | none when no workload-specific capacity stays allocated | pod resource time for every attempt |
378
+ | Delegated Kubernetes Job | none when no workload-specific capacity stays allocated | child pod resource time, recorded under its parent run |
379
+ | Resident Kubernetes Deployment | allocated resources for 730 hours | extra per-run resources that are not in the resident allocation |
380
+
381
+ This gives two different substrate equations for the same model line:
382
+
383
+ ```text
384
+ Actions monthly cost =
385
+ model and tool cost for all attempts
386
+ + hosted billable minutes × hosted runner price
387
+ + self-hosted runner allocation
388
+ + storage
389
+ + network
390
+ ```
391
+
392
+ ```text
393
+ Resident monthly cost =
394
+ resident hourly allocation × 730
395
+ + model and tool cost for all attempts
396
+ + storage
397
+ + network
398
+ ```
399
+
400
+ An idle resident has zero model cost when it makes no model exchange. It still
401
+ has its 730-hour substrate allocation. A scheduled Job has no workload-specific
402
+ compute cost while no pod exists, unless the cluster allocation method assigns
403
+ idle capacity to it.
404
+
405
+ See the [Actions billing-inputs research note](https://github.com/ai-outfitter/actions/blob/main/docs/research/inference-pricing.md)
406
+ for the runner-minute form. The
407
+ [Agent Operator](https://github.com/ai-outfitter/agent-operator) resident and
408
+ Job forms are not documented yet.
409
+
410
+ ## Retries, failures, and subagents
411
+
412
+ Count every attempt once. A failed attempt can incur model, tool, runner, and
413
+ network costs even when it produces no artifact. A retry MUST use a new attempt
414
+ number. Do not overwrite or hide the first attempt.
415
+
416
+ A delegated run MUST carry its parent run. Add the child cost once to the
417
+ workload total. Do not also copy the child model exchanges into the parent's
418
+ direct model line.
419
+
420
+ If a workflow platform retries a whole job, record that job as a new attempt.
421
+ If a harness retries one provider request inside the same attempt, record each
422
+ model exchange and aggregate them once into that attempt.
423
+
424
+ ## Unknown and partial usage
425
+
426
+ Use these states:
427
+
428
+ | State | Meaning |
429
+ | ------------- | -------------------------------------------------------------------------------------------------- |
430
+ | `complete` | The record contains all usage fields that the provider and harness expose. It has no declared gap. |
431
+ | `partial` | The record contains some usage fields and lists each unavailable field. |
432
+ | `unavailable` | The record contains no usable usage counters and lists the gap. |
433
+
434
+ Use `null` for an unavailable counter. Use `0` only when the provider or
435
+ harness observed zero. A monthly view MUST render unavailable cost as unknown.
436
+ It MUST NOT render it as `$0`.
437
+
438
+ Do not compare two totals until their boundaries match. State whether each
439
+ total includes retries, delegated runs, tools, storage, network, quotas, and
440
+ tax.
441
+
442
+ ## Replace estimates with measurements
443
+
444
+ Retain one machine-readable record for each run and model exchange. After 30
445
+ measured daily reports, replace the planning bands with the median, 90th
446
+ percentile, and maximum successful-run cost. Report failed attempts and retries
447
+ separately.
448
+
449
+ Only one execution surface can supply that record today:
450
+
451
+ | Surface | Usage record | Status |
452
+ | ----------------------- | ------------------------------------------ | ----------- |
453
+ | Local Claude Code | One `usage` object for each assistant turn | Available |
454
+ | Local `codex` | The rollout file carries no token field | Unavailable |
455
+ | Agent Operator resident | The Pi session file carries no token field | Unavailable |
456
+ | GitHub Actions run | An HTML transcript artifact, with no total | Unavailable |
457
+
458
+ Therefore a comparison across surfaces is not possible yet. Close this gap
459
+ before you replace any estimate above. Two proposals do it:
460
+ [Pensieve pull request #22](https://github.com/ai-outfitter/pensieve/pull/22)
461
+ for the record contract, and
462
+ [Actions pull request #42](https://github.com/ai-outfitter/actions/pull/42)
463
+ for the runner-minute inputs. Neither is merged.
464
+
465
+ This guide defines the method and the record contract. It does not include a
466
+ collector, a calculator command, or a billing dashboard.
@@ -1,8 +1,10 @@
1
1
  # Telemetry
2
2
 
3
- Outfitter includes opt-outable pseudonymous product analytics to measure command adoption and reliability. The shipped PostHog API key is currently empty, so no build produced from this repository sends telemetry. Provisioning a key is deferred maintainer work. The consent setting still defaults to enabled and can be changed at any time.
3
+ Outfitter includes opt-outable pseudonymous product analytics to measure command adoption and reliability. A PostHog key is provisioned, so builds produced from this repository do send telemetry. The consent setting defaults to enabled and can be changed at any time.
4
4
 
5
- In a future build with a provisioned key, the first command that would send an event prints a one-time notice to stderr. The notice explains what is collected, what is excluded, and how to opt out. With the current empty key, telemetry is inert: it creates no client or state, sends no events, and prints no notice.
5
+ The first command that would send an event prints a one-time notice to stderr. The notice explains what is collected, what is excluded, and how to opt out.
6
+
7
+ Earlier builds shipped an empty key and were fully inert: they created no client or state, sent no events, and printed no notice.
6
8
 
7
9
  ## Event contract
8
10
 
@@ -45,7 +47,7 @@ In CI, telemetry remains enabled according to the same consent rules and events
45
47
 
46
48
  ## Where the data goes
47
49
 
48
- When a maintainer provisions a PostHog key, events go to PostHog Cloud US at `https://us.i.posthog.com`. No retention period is stated here because this repository does not currently configure one.
50
+ Events go to the `ai-outfitter` organization's PostHog project on PostHog Cloud US at `https://us.i.posthog.com`. No retention period is stated here because this repository does not currently configure one.
49
51
 
50
52
  ## Control telemetry
51
53
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-outfitter/outfitter",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Profile-oriented wrapper for launching pi, Claude Code, and future agent CLIs with reproducible configuration.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -5,16 +5,16 @@
5
5
  "type": "object",
6
6
  "required": ["name"],
7
7
  "properties": {
8
- "name": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 64 },
8
+ "name": { "$ref": "#/$defs/agentSlug" },
9
9
  "label": { "type": "string", "minLength": 1 },
10
10
  "description": { "type": "string" },
11
11
  "inherits": {
12
12
  "oneOf": [
13
- { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 64 },
13
+ { "$ref": "#/$defs/agentSlug" },
14
14
  {
15
15
  "type": "array",
16
16
  "minItems": 1,
17
- "items": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 64 }
17
+ "items": { "$ref": "#/$defs/agentSlug" }
18
18
  }
19
19
  ],
20
20
  "description": "Parent agent slug or ordered parent slug list composed parent-first before this agent."
@@ -36,7 +36,7 @@
36
36
  "description": "Skill slugs resolved from agents/<name>/skills first, then catalog-wide skills."
37
37
  },
38
38
  "subagents": {
39
- "$ref": "#/$defs/slugList",
39
+ "$ref": "#/$defs/agentSlugList",
40
40
  "description": "Agent slugs delegated to. Resolved catalog-wide (a delegate is a shared agent, not nested under agents/<name>)."
41
41
  },
42
42
  "mcp": {
@@ -64,6 +64,15 @@
64
64
  },
65
65
  "additionalProperties": true,
66
66
  "$defs": {
67
+ "agentSlug": {
68
+ "type": "string",
69
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*(?:\\.[a-z0-9]+(?:-[a-z0-9]+)*)*$",
70
+ "maxLength": 64
71
+ },
72
+ "agentSlugList": {
73
+ "type": "array",
74
+ "items": { "$ref": "#/$defs/agentSlug" }
75
+ },
67
76
  "toolName": {
68
77
  "type": "string",
69
78
  "minLength": 1,