@ai-outfitter/outfitter 1.11.0 → 1.13.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 (65) hide show
  1. package/.outfitter/skills/outfitter/SKILL.md +4 -0
  2. package/README.md +5 -1
  3. package/dist/cli/OutfitterCli.js +2 -0
  4. package/dist/cli/OutfitterCli.js.map +1 -1
  5. package/dist/cli/commands/DumpCommand.d.ts +1 -0
  6. package/dist/cli/commands/DumpCommand.js +12 -5
  7. package/dist/cli/commands/DumpCommand.js.map +1 -1
  8. package/dist/cli/commands/ListCommand.d.ts +9 -0
  9. package/dist/cli/commands/ListCommand.js +25 -9
  10. package/dist/cli/commands/ListCommand.js.map +1 -1
  11. package/dist/cli/commands/RunAgentCommand.d.ts +5 -0
  12. package/dist/cli/commands/RunAgentCommand.js +16 -1
  13. package/dist/cli/commands/RunAgentCommand.js.map +1 -1
  14. package/dist/cli/commands/SetupCommand.d.ts +2 -1
  15. package/dist/cli/commands/SetupCommand.js +1 -0
  16. package/dist/cli/commands/SetupCommand.js.map +1 -1
  17. package/dist/cli/commands/SourcesCommand.d.ts +19 -0
  18. package/dist/cli/commands/SourcesCommand.js +85 -0
  19. package/dist/cli/commands/SourcesCommand.js.map +1 -0
  20. package/dist/cli/commands/SyncCommand.js +8 -0
  21. package/dist/cli/commands/SyncCommand.js.map +1 -1
  22. package/dist/dump/WorkflowDump.d.ts +4 -0
  23. package/dist/dump/WorkflowDump.js +148 -0
  24. package/dist/dump/WorkflowDump.js.map +1 -0
  25. package/dist/resolver/Resolver.js +2 -0
  26. package/dist/resolver/Resolver.js.map +1 -1
  27. package/dist/resolver/ResolverValidation.js +156 -1
  28. package/dist/resolver/ResolverValidation.js.map +1 -1
  29. package/dist/resolver/Resource.d.ts +1 -1
  30. package/dist/resolver/Resource.js +1 -1
  31. package/dist/resolver/Resource.js.map +1 -1
  32. package/dist/resolver/WorkflowDefinition.d.ts +56 -0
  33. package/dist/resolver/WorkflowDefinition.js +23 -0
  34. package/dist/resolver/WorkflowDefinition.js.map +1 -0
  35. package/dist/schemas/settings.schema.json +5 -0
  36. package/dist/schemas/workflow.schema.json +81 -0
  37. package/dist/settings/Settings.d.ts +6 -0
  38. package/dist/settings/Settings.js +1 -0
  39. package/dist/settings/Settings.js.map +1 -1
  40. package/dist/settings/SettingsLoader.js +1 -0
  41. package/dist/settings/SettingsLoader.js.map +1 -1
  42. package/dist/settings/SettingsMerger.js +3 -0
  43. package/dist/settings/SettingsMerger.js.map +1 -1
  44. package/dist/setup/DefaultCatalog.js +19 -3
  45. package/dist/setup/DefaultCatalog.js.map +1 -1
  46. package/dist/sources/SourceCachePolicy.d.ts +11 -0
  47. package/dist/sources/SourceCachePolicy.js +48 -0
  48. package/dist/sources/SourceCachePolicy.js.map +1 -0
  49. package/dist/sources/SourceState.d.ts +32 -0
  50. package/dist/sources/SourceState.js +90 -0
  51. package/dist/sources/SourceState.js.map +1 -0
  52. package/dist/validation/SchemaValidator.d.ts +1 -1
  53. package/dist/validation/SchemaValidator.js +2 -0
  54. package/dist/validation/SchemaValidator.js.map +1 -1
  55. package/docs/documentation/README.md +5 -3
  56. package/docs/documentation/ai-outfitter.md +259 -0
  57. package/docs/documentation/assets/feature-to-pr.svg +70 -0
  58. package/docs/documentation/catalogs.md +9 -1
  59. package/docs/documentation/cli.md +21 -8
  60. package/docs/documentation/containers.md +3 -80
  61. package/docs/documentation/dump-and-bake.md +2 -0
  62. package/docs/documentation/settings.md +5 -0
  63. package/package.json +1 -1
  64. package/src/schemas/settings.schema.json +5 -0
  65. package/src/schemas/workflow.schema.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowDefinition.js","sourceRoot":"","sources":["../../src/resolver/WorkflowDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAoDlE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,KAAmD,EACjB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAgD,EAAE;IACnG,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IAErG,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,+BAA+B,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IAC3F,CAAC;IAED,OAAO,MAAM,CAAC,QAA8B,CAAC;AAC/C,CAAC,CAAC"}
@@ -11,6 +11,11 @@
11
11
  "description": "Whether a run stands on the machine's native harness configuration (inherit, the default) or on the projection alone (isolated). Honored only from home-scope settings."
12
12
  },
13
13
  "cache_directory": { "type": "string", "minLength": 1 },
14
+ "source_cache": {
15
+ "type": "object",
16
+ "properties": { "policy": { "enum": ["repair", "locked", "offline"] } },
17
+ "additionalProperties": false
18
+ },
14
19
  "state_persistence": {
15
20
  "type": "object",
16
21
  "description": "Maps adapter-declared state paths to a persistence strategy.",
@@ -0,0 +1,81 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://ai-outfitter.com/schemas/workflow.schema.json",
4
+ "title": "AI Outfitter workflow",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": ["version", "id", "title", "description", "actors", "nodes"],
8
+ "properties": {
9
+ "version": { "const": 1 },
10
+ "id": { "type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" },
11
+ "title": { "type": "string", "minLength": 1 },
12
+ "description": { "type": "string", "minLength": 1 },
13
+ "status": { "type": "string" },
14
+ "actors": {
15
+ "type": "object",
16
+ "additionalProperties": {
17
+ "type": "object",
18
+ "additionalProperties": true,
19
+ "required": ["kind"],
20
+ "properties": {
21
+ "kind": { "enum": ["human", "agent", "tool", "system"] },
22
+ "profile": { "type": "string" },
23
+ "skills": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }
24
+ },
25
+ "allOf": [
26
+ {
27
+ "if": { "properties": { "kind": { "const": "agent" } }, "required": ["kind"] },
28
+ "then": { "required": ["profile"] }
29
+ }
30
+ ]
31
+ }
32
+ },
33
+ "environments": { "type": "object" },
34
+ "integrations": {
35
+ "type": "object",
36
+ "additionalProperties": {
37
+ "type": "object",
38
+ "additionalProperties": true,
39
+ "properties": {
40
+ "kind": { "type": "string" },
41
+ "server": { "type": "string" },
42
+ "tools": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
43
+ "repository": { "type": "string" },
44
+ "ref": { "type": "string" },
45
+ "path": { "type": "string" },
46
+ "sha256": { "type": "string" }
47
+ }
48
+ }
49
+ },
50
+ "checks": { "type": "object" },
51
+ "triggers": { "type": "array", "items": { "type": "object" } },
52
+ "feedback": { "type": "array", "items": { "type": "object", "required": ["from", "to"] } },
53
+ "nodes": {
54
+ "type": "array",
55
+ "minItems": 1,
56
+ "items": {
57
+ "type": "object",
58
+ "additionalProperties": true,
59
+ "required": ["id", "description"],
60
+ "properties": {
61
+ "id": { "type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" },
62
+ "description": { "type": "string", "minLength": 1 },
63
+ "action": { "type": "string" },
64
+ "workflow": { "type": "string" },
65
+ "actor": { "type": "string" },
66
+ "environment": { "type": "string" },
67
+ "needs": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
68
+ "skill": { "type": "string" },
69
+ "skills": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
70
+ "prompt_fragment": { "type": "string" },
71
+ "prompt_fragments": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
72
+ "uses": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }
73
+ },
74
+ "oneOf": [
75
+ { "required": ["action"], "not": { "required": ["workflow"] } },
76
+ { "required": ["workflow"], "not": { "required": ["action"] } }
77
+ ]
78
+ }
79
+ }
80
+ }
81
+ }
@@ -20,6 +20,8 @@ export type Isolation = (typeof ISOLATIONS)[number];
20
20
  /** Functional persistence strategies for adapter-declared state paths. */
21
21
  export type StatePersistenceStrategy = 'symlink' | 'discard' | 'warn' | 'error' | 'prompt';
22
22
  export type StatePersistence = Readonly<Record<string, StatePersistenceStrategy>>;
23
+ export declare const SOURCE_CACHE_POLICIES: readonly ["repair", "locked", "offline"];
24
+ export type SourceCachePolicy = (typeof SOURCE_CACHE_POLICIES)[number];
23
25
  /**
24
26
  * An ordered `.agents` payload source: a local path, a remote URI, or a `github` shorthand.
25
27
  * Modeled as a discriminated union so exactly one of `path`/`uri`/`github` is present and `ref`
@@ -50,6 +52,9 @@ export interface EnterpriseSettings {
50
52
  export interface TelemetrySettings {
51
53
  readonly enabled?: boolean;
52
54
  }
55
+ export interface SourceCacheSettings {
56
+ readonly policy?: SourceCachePolicy;
57
+ }
53
58
  export interface Settings {
54
59
  /** Agent slug that plain `outfitter` runs when no agent is selected. */
55
60
  readonly defaultAgent?: string;
@@ -64,6 +69,7 @@ export interface Settings {
64
69
  readonly sources?: readonly SourceReference[];
65
70
  readonly remoteSettings?: readonly RemoteSettingsReference[];
66
71
  readonly cacheDirectory?: string;
72
+ readonly sourceCache?: SourceCacheSettings;
67
73
  readonly statePersistence?: StatePersistence;
68
74
  readonly customSettings?: CustomSettings;
69
75
  readonly startup?: StartupSettings;
@@ -7,6 +7,7 @@ export const HARNESSES = ['pi', 'claude', 'codex'];
7
7
  * which is what a reproducible CI or container run wants.
8
8
  */
9
9
  export const ISOLATIONS = ['inherit', 'isolated'];
10
+ export const SOURCE_CACHE_POLICIES = ['repair', 'locked', 'offline'];
10
11
  export const emptySettings = () => ({
11
12
  sources: [],
12
13
  remoteSettings: [],
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/settings/Settings.ts"],"names":[],"mappings":"AAQA,0DAA0D;AAC1D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAG5D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;AAkD3D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAa,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,EAAE;CACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/settings/Settings.ts"],"names":[],"mappings":"AAQA,0DAA0D;AAC1D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAG5D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;AAM3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAmD9E,MAAM,CAAC,MAAM,aAAa,GAAG,GAAa,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,EAAE;CACnB,CAAC,CAAC"}
@@ -130,6 +130,7 @@ const convertSettingsDocument = (document, settingsDirectory, scope) => ({
130
130
  cacheDirectory: document.cache_directory === undefined
131
131
  ? undefined
132
132
  : resolveConfigDirectory(document.cache_directory, settingsDirectory),
133
+ sourceCache: document.source_cache,
133
134
  statePersistence: document.state_persistence,
134
135
  customSettings: document.custom_settings,
135
136
  startup: convertStartupSettings(document.startup),
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsLoader.js","sourceRoot":"","sources":["../../src/settings/SettingsLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SettingsLoader.js","sourceRoot":"","sources":["../../src/settings/SettingsLoader.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export const mergeSettingsStack = (settingsStack) => {
9
9
  let sources;
10
10
  let remoteSettings;
11
11
  let cacheDirectory;
12
+ let sourceCache;
12
13
  let statePersistence;
13
14
  let customSettings;
14
15
  let startup;
@@ -21,6 +22,7 @@ export const mergeSettingsStack = (settingsStack) => {
21
22
  sources = settings.sources ?? sources;
22
23
  remoteSettings = settings.remoteSettings ?? remoteSettings;
23
24
  cacheDirectory = settings.cacheDirectory ?? cacheDirectory;
25
+ sourceCache = settings.sourceCache === undefined ? sourceCache : { ...sourceCache, ...settings.sourceCache };
24
26
  statePersistence =
25
27
  settings.statePersistence === undefined
26
28
  ? statePersistence
@@ -38,6 +40,7 @@ export const mergeSettingsStack = (settingsStack) => {
38
40
  sources: sources ?? [],
39
41
  remoteSettings: remoteSettings ?? [],
40
42
  cacheDirectory,
43
+ sourceCache: sourceCache ?? {},
41
44
  statePersistence: statePersistence ?? {},
42
45
  customSettings: customSettings ?? {},
43
46
  startup: startup ?? {},
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsMerger.js","sourceRoot":"","sources":["../../src/settings/SettingsMerger.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,qDAAqD;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,aAAkC,EAAY,EAAE;IACjF,IAAI,YAAgC,CAAC;IACrC,IAAI,cAA0C,CAAC;IAC/C,IAAI,SAAgC,CAAC;IACrC,IAAI,OAA4B,CAAC;IACjC,IAAI,cAA0C,CAAC;IAC/C,IAAI,cAAkC,CAAC;IACvC,IAAI,gBAA8C,CAAC;IACnD,IAAI,cAA0C,CAAC;IAC/C,IAAI,OAA4B,CAAC;IACjC,IAAI,UAAkC,CAAC;IACvC,IAAI,SAAgC,CAAC;IAErC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,YAAY,CAAC;QACrD,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,cAAc,CAAC;QAC3D,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,SAAS,CAAC;QAE5C,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC;QACtC,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,cAAc,CAAC;QAC3D,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,cAAc,CAAC;QAC3D,gBAAgB;YACd,QAAQ,CAAC,gBAAgB,KAAK,SAAS;gBACrC,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC5D,cAAc,GAAG,2BAA2B,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QACtF,OAAO,GAAG,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACzF,UAAU,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxG,SAAS,GAAG,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACrG,CAAC;IAED,OAAO;QACL,GAAG,aAAa,EAAE;QAClB,YAAY;QACZ,cAAc;QACd,SAAS;QACT,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,cAAc,EAAE,cAAc,IAAI,EAAE;QACpC,cAAc;QACd,gBAAgB,EAAE,gBAAgB,IAAI,EAAE;QACxC,cAAc,EAAE,cAAc,IAAI,EAAE;QACpC,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,UAAU,EAAE,UAAU,IAAI,EAAE;QAC5B,SAAS,EAAE,SAAS,IAAI,EAAE;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAClC,eAA2C,EAC3C,gBAA4C,EAChB,EAAE,CAC9B,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAE5G,MAAM,mBAAmB,GAAG,CAC1B,eAA2C,EAC3C,gBAAgC,EAChB,EAAE,CAAC,sBAAsB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"SettingsMerger.js","sourceRoot":"","sources":["../../src/settings/SettingsMerger.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { join } from 'node:path';
4
4
  import { runGit, syncRemoteRepositoryAtomically, tryReadCleanHead } from '../sources/GitRepository.js';
5
5
  import { createRemoteRepositoryCachePath, encodeRemoteSourceSelection, formatRemoteSourceDisplay, isImmutableRef, isVersionTagRef, redactEmbeddedSourceCredentials, } from '../sources/SourceCache.js';
6
6
  import { readDeclaredRemoteSources } from '../sources/TransitiveSources.js';
7
+ import { writeSourceState } from '../sources/SourceState.js';
7
8
  export const defaultCatalogSource = {
8
9
  github: 'ai-outfitter/default-profiles',
9
10
  // TODO(release-automation): when default-profiles publishes a new Release Please tag, open a
@@ -22,7 +23,7 @@ const isDirectory = (path) => {
22
23
  };
23
24
  const hasAgentsDirectory = (root) => isDirectory(join(root, 'agents'));
24
25
  // Any directory the resolver treats as a `.agents` payload container, colocated or at the root.
25
- const hasAnyAgentsPayload = (root) => ['agents', 'skills', 'knowledge', 'commands'].some((directory) => isDirectory(join(root, directory))) ||
26
+ const hasAnyAgentsPayload = (root) => ['agents', 'skills', 'knowledge', 'commands', 'workflows'].some((directory) => isDirectory(join(root, directory))) ||
26
27
  isDirectory(join(root, '.agents'));
27
28
  const assertImmutableRef = (ref) => {
28
29
  if (!isImmutableRef(ref)) {
@@ -45,10 +46,18 @@ export const bootstrapPinnedCatalog = (input) => {
45
46
  assertImmutableRef(input.source.ref);
46
47
  const hasPayload = input.requirePayload ?? hasAgentsDirectory;
47
48
  const root = createRemoteRepositoryCachePath(input.homeDirectory, input.source, input.cacheDirectory);
48
- if (isPinnedCatalogCheckout(root, input.source.ref, hasPayload))
49
+ if (isPinnedCatalogCheckout(root, input.source.ref, hasPayload)) {
50
+ writeSourceState({
51
+ homeDirectory: input.homeDirectory,
52
+ cacheDirectory: input.cacheDirectory,
53
+ cachePath: root,
54
+ source: input.source,
55
+ commit: resolveExpectedCommit(root, input.source.ref),
56
+ });
49
57
  return { root, source: input.source };
58
+ }
50
59
  try {
51
- (input.syncRepository ?? syncRemoteRepositoryAtomically)({
60
+ const synced = (input.syncRepository ?? syncRemoteRepositoryAtomically)({
52
61
  cachePath: root,
53
62
  fetchRef: isVersionTagRef(input.source.ref)
54
63
  ? `refs/tags/${input.source.ref}:refs/tags/${input.source.ref}`
@@ -65,6 +74,13 @@ export const bootstrapPinnedCatalog = (input) => {
65
74
  return 0;
66
75
  },
67
76
  });
77
+ writeSourceState({
78
+ homeDirectory: input.homeDirectory,
79
+ cacheDirectory: input.cacheDirectory,
80
+ cachePath: root,
81
+ source: input.source,
82
+ commit: synced.commit,
83
+ });
68
84
  return { root, source: input.source };
69
85
  }
70
86
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultCatalog.js","sourceRoot":"","sources":["../../src/setup/DefaultCatalog.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAK5E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,+BAA+B;IACvC,6FAA6F;IAC7F,gGAAgG;IAChG,GAAG,EAAE,QAAQ;CAC2B,CAAC;AAoB3C,oGAAoG;AACpG,0FAA0F;AAC1F,MAAM,WAAW,GAAG,CAAC,IAAY,EAAW,EAAE;IAC5C,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExF,gGAAgG;AAChG,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAW,EAAE,CACpD,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACrG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAErC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAQ,EAAE;IAC/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,6CAA6C,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE,CAClE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAE9F,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,UAAqC,EAAW,EAAE;IAC5G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,wGAAwG;AACxG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAgC,EAAE;IACzG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,IAAI,kBAAkB,CAAC;IAC9D,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACtG,IAAI,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IAEvG,IAAI,CAAC;QACH,CAAC,KAAK,CAAC,cAAc,IAAI,8BAA8B,CAAC,CAAC;YACvD,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;gBACzC,CAAC,CAAC,aAAa,KAAK,CAAC,MAAM,CAAC,GAAG,cAAc,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;gBAC/D,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,yFAAyF;YACzF,4FAA4F;YAC5F,uFAAuF;YACvF,wCAAwC;YACxC,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;oBAC1E,MAAM,IAAI,KAAK,CAAC,8CAA8C,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;gBACrF,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;SACF,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,oEAAoE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,EAAE,EAAE;YACjH,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAgC,EAAE;IACzG,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAErE,IAAI,QAAQ,GAAiE;QAC3E,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;KAC1E,CAAC;IACF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAwD,EAAE,CAAC;QAErE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,qFAAqF;YACrF,KAAK,MAAM,QAAQ,IAAI,yBAAyB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBACjG,MAAM,GAAG,GAAG,2BAA2B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,sBAAsB,CAAC;4BAC3B,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,cAAc,EAAE,KAAK,CAAC,cAAc;4BACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,cAAc,EAAE,KAAK,CAAC,cAAc;4BACpC,2EAA2E;4BAC3E,cAAc,EAAE,mBAAmB;yBACpC,CAAC,CAAC,IAAI;wBACP,KAAK,EAAE,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC;qBAClD,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,mFAAmF;oBACnF,wFAAwF;gBAC1F,CAAC;YACH,CAAC;QACH,CAAC;QAED,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;sFACsF;AACtF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,aAAqB,EAAE,cAAuB,EAAgC,EAAE,CACtH,sBAAsB,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"DefaultCatalog.js","sourceRoot":"","sources":["../../src/setup/DefaultCatalog.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAK7D,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,+BAA+B;IACvC,6FAA6F;IAC7F,gGAAgG;IAChG,GAAG,EAAE,QAAQ;CAC2B,CAAC;AAoB3C,oGAAoG;AACpG,0FAA0F;AAC1F,MAAM,WAAW,GAAG,CAAC,IAAY,EAAW,EAAE;IAC5C,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExF,gGAAgG;AAChG,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAW,EAAE,CACpD,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAClH,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAErC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAQ,EAAE;IAC/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,6CAA6C,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE,CAClE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAE9F,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,UAAqC,EAAW,EAAE;IAC5G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,wGAAwG;AACxG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAgC,EAAE;IACzG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,IAAI,kBAAkB,CAAC;IAC9D,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACtG,IAAI,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QAChE,gBAAgB,CAAC;YACf,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;SACtD,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,8BAA8B,CAAC,CAAC;YACtE,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;gBACzC,CAAC,CAAC,aAAa,KAAK,CAAC,MAAM,CAAC,GAAG,cAAc,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;gBAC/D,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,yFAAyF;YACzF,4FAA4F;YAC5F,uFAAuF;YACvF,wCAAwC;YACxC,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;oBAC1E,MAAM,IAAI,KAAK,CAAC,8CAA8C,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;gBACrF,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;SACF,CAAC,CAAC;QACH,gBAAgB,CAAC;YACf,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,oEAAoE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,EAAE,EAAE;YACjH,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAgC,EAAE;IACzG,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAErE,IAAI,QAAQ,GAAiE;QAC3E,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;KAC1E,CAAC;IACF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAwD,EAAE,CAAC;QAErE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,qFAAqF;YACrF,KAAK,MAAM,QAAQ,IAAI,yBAAyB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBACjG,MAAM,GAAG,GAAG,2BAA2B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC;wBACR,IAAI,EAAE,sBAAsB,CAAC;4BAC3B,aAAa,EAAE,KAAK,CAAC,aAAa;4BAClC,cAAc,EAAE,KAAK,CAAC,cAAc;4BACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,cAAc,EAAE,KAAK,CAAC,cAAc;4BACpC,2EAA2E;4BAC3E,cAAc,EAAE,mBAAmB;yBACpC,CAAC,CAAC,IAAI;wBACP,KAAK,EAAE,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC;qBAClD,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,mFAAmF;oBACnF,wFAAwF;gBAC1F,CAAC;YACH,CAAC;QACH,CAAC;QAED,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;sFACsF;AACtF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,aAAqB,EAAE,cAAuB,EAAgC,EAAE,CACtH,sBAAsB,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { SourceCachePolicy } from '../settings/Settings.js';
2
+ export interface PrepareSourceCachesInput {
3
+ readonly homeDirectory: string;
4
+ readonly projectDirectory: string;
5
+ readonly policy: SourceCachePolicy;
6
+ }
7
+ export interface PrepareSourceCachesResult {
8
+ readonly messages: readonly string[];
9
+ }
10
+ /** Establishes every declared remote before resolution; local layers are never passed to sync. */
11
+ export declare const prepareSourceCaches: (input: PrepareSourceCachesInput) => PrepareSourceCachesResult;
@@ -0,0 +1,48 @@
1
+ import { mkdirSync, renameSync } from 'node:fs';
2
+ import { dirname } from 'node:path';
3
+ import { executeSyncCommand } from '../cli/commands/SyncCommand.js';
4
+ import { syncRemoteRepositoryAtomically } from './GitRepository.js';
5
+ import { inspectSourceCache, unchangedResult, withSourceLock, writeSourceState } from './SourceState.js';
6
+ const fullCommitPattern = /^[a-f0-9]{40}$/u;
7
+ const quarantine = (cachePath) => {
8
+ const destination = `${cachePath}.outfitter-quarantine-${new Date().toISOString().replace(/[:.]/gu, '-')}-${process.pid}`;
9
+ mkdirSync(dirname(destination), { recursive: true });
10
+ renameSync(cachePath, destination);
11
+ return destination;
12
+ };
13
+ const policyRepositorySync = (input) => (request) => withSourceLock(request.cachePath, () => {
14
+ if (input.policy === 'locked' && !fullCommitPattern.test(request.source.ref ?? '')) {
15
+ throw new Error('Locked source-cache policy requires a full 40-character commit pin.');
16
+ }
17
+ const state = inspectSourceCache({
18
+ homeDirectory: input.homeDirectory,
19
+ cachePath: request.cachePath,
20
+ source: request.source,
21
+ });
22
+ if (state.health === 'healthy' && state.commit !== undefined)
23
+ return unchangedResult(state.commit);
24
+ if (input.policy === 'offline') {
25
+ throw new Error(`Source cache is ${state.health}; offline policy prohibits repair.`);
26
+ }
27
+ const quarantined = state.health === 'dirty' ? quarantine(request.cachePath) : undefined;
28
+ const result = syncRemoteRepositoryAtomically(request);
29
+ writeSourceState({
30
+ homeDirectory: input.homeDirectory,
31
+ source: request.source,
32
+ commit: result.commit,
33
+ cachePath: request.cachePath,
34
+ });
35
+ return {
36
+ ...result,
37
+ warnings: result.warnings + (quarantined === undefined ? 0 : 1),
38
+ };
39
+ });
40
+ /** Establishes every declared remote before resolution; local layers are never passed to sync. */
41
+ export const prepareSourceCaches = (input) => {
42
+ const result = executeSyncCommand({ homeDirectory: input.homeDirectory, projectDirectory: input.projectDirectory }, { syncRepository: policyRepositorySync(input) });
43
+ if (result.exitCode !== 0) {
44
+ throw new Error(`Source-cache ${input.policy} policy failed before composition: ${result.messages.join('; ')}`);
45
+ }
46
+ return { messages: result.messages };
47
+ };
48
+ //# sourceMappingURL=SourceCachePolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceCachePolicy.js","sourceRoot":"","sources":["../../src/sources/SourceCachePolicy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { AtomicRepositorySyncResult } from './GitRepository.js';
2
+ import type { RemoteSourceReference } from './SourceCache.js';
3
+ export declare const SOURCE_STATE_VERSION = 1;
4
+ export interface SourceStateManifest {
5
+ readonly version: 1;
6
+ readonly source: string;
7
+ readonly requestedRef: string | null;
8
+ readonly resolvedCommit: string;
9
+ readonly cacheKey: string;
10
+ }
11
+ export type SourceCacheHealth = 'healthy' | 'missing' | 'dirty' | 'legacy' | 'mismatched' | 'unverified';
12
+ export declare const sourceStatePath: (homeDirectory: string, source: RemoteSourceReference, cacheDirectory?: string) => string;
13
+ export declare const readSourceState: (path: string) => SourceStateManifest | undefined;
14
+ export declare const inspectSourceCache: (input: {
15
+ readonly homeDirectory: string;
16
+ readonly cacheDirectory?: string;
17
+ readonly cachePath: string;
18
+ readonly source: RemoteSourceReference;
19
+ }) => {
20
+ readonly health: SourceCacheHealth;
21
+ readonly commit?: string;
22
+ readonly manifest?: SourceStateManifest;
23
+ };
24
+ export declare const writeSourceState: (input: {
25
+ readonly homeDirectory: string;
26
+ readonly cacheDirectory?: string;
27
+ readonly source: RemoteSourceReference;
28
+ readonly commit: string;
29
+ readonly cachePath?: string;
30
+ }) => void;
31
+ export declare const withSourceLock: <T>(cachePath: string, action: () => T) => T;
32
+ export declare const unchangedResult: (commit: string) => AtomicRepositorySyncResult;
@@ -0,0 +1,90 @@
1
+ import { mkdirSync, openSync, closeSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { tryReadCleanHead } from './GitRepository.js';
4
+ import { encodeRemoteSource, normalizeRemoteSourceUri, redactSourceUriCredentials, resolveRemoteRepositoryCacheRoot, } from './SourceCache.js';
5
+ export const SOURCE_STATE_VERSION = 1;
6
+ export const sourceStatePath = (homeDirectory, source, cacheDirectory) => join(resolveRemoteRepositoryCacheRoot(homeDirectory, cacheDirectory), 'source-state', `${encodeRemoteSource(source)}.json`);
7
+ const sourceStatePathForCache = (cachePath, source) => join(dirname(dirname(cachePath)), 'source-state', `${encodeRemoteSource(source)}.json`);
8
+ const sourceIdentity = (source) => redactSourceUriCredentials(normalizeRemoteSourceUri(source));
9
+ export const readSourceState = (path) => {
10
+ try {
11
+ const value = JSON.parse(readFileSync(path, 'utf8'));
12
+ if (value.version !== SOURCE_STATE_VERSION ||
13
+ typeof value.source !== 'string' ||
14
+ !(typeof value.requestedRef === 'string' || value.requestedRef === null) ||
15
+ typeof value.resolvedCommit !== 'string' ||
16
+ typeof value.cacheKey !== 'string')
17
+ return undefined;
18
+ return value;
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ };
24
+ export const inspectSourceCache = (input) => {
25
+ const commit = tryReadCleanHead(input.cachePath);
26
+ if (commit === undefined) {
27
+ try {
28
+ readFileSync(join(input.cachePath, '.git', 'HEAD'));
29
+ return { health: 'dirty' };
30
+ }
31
+ catch {
32
+ return { health: 'missing' };
33
+ }
34
+ }
35
+ const manifest = readSourceState(sourceStatePathForCache(input.cachePath, input.source));
36
+ if (manifest === undefined)
37
+ return { health: 'legacy', commit };
38
+ if (manifest.source !== sourceIdentity(input.source) ||
39
+ manifest.requestedRef !== (input.source.ref ?? null) ||
40
+ manifest.cacheKey !== encodeRemoteSource(input.source) ||
41
+ manifest.resolvedCommit !== commit)
42
+ return { health: 'mismatched', commit, manifest };
43
+ return { health: 'healthy', commit, manifest };
44
+ };
45
+ export const writeSourceState = (input) => {
46
+ const path = input.cachePath === undefined
47
+ ? sourceStatePath(input.homeDirectory, input.source, input.cacheDirectory)
48
+ : sourceStatePathForCache(input.cachePath, input.source);
49
+ mkdirSync(dirname(path), { recursive: true });
50
+ const temporary = `${path}.${process.pid}.tmp`;
51
+ const manifest = {
52
+ version: SOURCE_STATE_VERSION,
53
+ source: sourceIdentity(input.source),
54
+ requestedRef: input.source.ref ?? null,
55
+ resolvedCommit: input.commit,
56
+ cacheKey: encodeRemoteSource(input.source),
57
+ };
58
+ writeFileSync(temporary, `${JSON.stringify(manifest, null, 2)}\n`, { mode: 0o600 });
59
+ renameSync(temporary, path);
60
+ };
61
+ export const withSourceLock = (cachePath, action) => {
62
+ const lock = `${cachePath}.outfitter.lock`;
63
+ mkdirSync(dirname(lock), { recursive: true });
64
+ const deadline = Date.now() + 300_000;
65
+ let descriptor;
66
+ while (descriptor === undefined) {
67
+ try {
68
+ descriptor = openSync(lock, 'wx', 0o600);
69
+ }
70
+ catch (error) {
71
+ /* v8 ignore next -- non-EEXIST open failures and a five-minute lock timeout are OS boundaries. */
72
+ if (error.code !== 'EEXIST' || Date.now() >= deadline)
73
+ throw error;
74
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 25);
75
+ }
76
+ }
77
+ try {
78
+ return action();
79
+ }
80
+ finally {
81
+ closeSync(descriptor);
82
+ rmSync(lock, { force: true });
83
+ }
84
+ };
85
+ export const unchangedResult = (commit) => ({
86
+ commit,
87
+ status: 'unchanged',
88
+ warnings: 0,
89
+ });
90
+ //# sourceMappingURL=SourceState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceState.js","sourceRoot":"","sources":["../../src/sources/SourceState.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type SchemaName = 'settings' | 'agent' | 'system-extension-hook';
1
+ export type SchemaName = 'settings' | 'agent' | 'system-extension-hook' | 'workflow';
2
2
  export interface ValidationIssue {
3
3
  readonly path: string;
4
4
  readonly message: string;
@@ -5,11 +5,13 @@ const readSchema = (schemaFileName) => JSON.parse(readFileSync(new URL(`../schem
5
5
  const settingsSchema = readSchema('settings.schema.json');
6
6
  const agentSchema = readSchema('agent.schema.json');
7
7
  const systemExtensionHookSchema = readSchema('system-extension-hook.schema.json');
8
+ const workflowSchema = readSchema('workflow.schema.json');
8
9
  const ajv = new Ajv2020({ allErrors: true });
9
10
  const validators = {
10
11
  settings: ajv.compile(settingsSchema),
11
12
  agent: ajv.compile(agentSchema),
12
13
  'system-extension-hook': ajv.compile(systemExtensionHookSchema),
14
+ workflow: ajv.compile(workflowSchema),
13
15
  };
14
16
  export const createValidationResult = (issues) => ({
15
17
  valid: issues.length === 0,
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/validation/SchemaValidator.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAc3C,MAAM,UAAU,GAAG,CAAC,cAAsB,EAAW,EAAE,CACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,cAAc,cAAc,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7F,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACpD,MAAM,yBAAyB,GAAG,UAAU,CAAC,mCAAmC,CAAC,CAAC;AAElF,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7C,MAAM,UAAU,GAAyC;IACvD,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,cAA2B,CAAC;IAClD,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,WAAwB,CAAC;IAC5C,uBAAuB,EAAE,GAAG,CAAC,OAAO,CAAC,yBAAsC,CAAC;CAC7E,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAkC,EAAoB,EAAE,CAAC,CAAC;IAC/F,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;IAC1B,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAsB,EAAE,QAAiB,EAAoB,EAAE;IAC5F,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAExC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,OAAO,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,sBAAsB,CAAE,QAAQ,CAAC,MAAiC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAmB,EAAE,CAAC,CAAC;IAC/D,IAAI,EAAE,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;IAC1D,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;CAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/validation/SchemaValidator.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAc3C,MAAM,UAAU,GAAG,CAAC,cAAsB,EAAW,EAAE,CACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,cAAc,cAAc,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7F,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACpD,MAAM,yBAAyB,GAAG,UAAU,CAAC,mCAAmC,CAAC,CAAC;AAClF,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAE1D,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7C,MAAM,UAAU,GAAyC;IACvD,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,cAA2B,CAAC;IAClD,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,WAAwB,CAAC;IAC5C,uBAAuB,EAAE,GAAG,CAAC,OAAO,CAAC,yBAAsC,CAAC;IAC5E,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,cAA2B,CAAC;CACnD,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAkC,EAAoB,EAAE,CAAC,CAAC;IAC/F,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;IAC1B,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAsB,EAAE,QAAiB,EAAoB,EAAE;IAC5F,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAExC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,OAAO,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,sBAAsB,CAAE,QAAQ,CAAC,MAAiC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAmB,EAAE,CAAC,CAAC;IAC/D,IAAI,EAAE,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;IAC1D,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;CAC/B,CAAC,CAAC"}
@@ -1,8 +1,10 @@
1
1
  # Outfitter documentation
2
2
 
3
- Outfitter lays out conventions for iterating on and sharing agent configuration — agent profiles, skills, and loadouts. The docs follow that arc: **set up** your own, **understand** the pieces, **share** them across projects and your org, **automate** them on more surfaces, then contribute back. Each page keeps to one concept and links onward when you need the next one, so nothing here has to be read up front.
3
+ Outfitter lays out conventions for iterating on and sharing agent configuration — agent profiles, skills, and loadouts. Start by setting up your configuration, then learn how to share it across projects and your organization and run it in CI or on a cluster. Each page keeps to one concept and links onward when you need the next one, so nothing here has to be read up front.
4
4
 
5
- Onboarding an organization? Start with
5
+ To understand AI Outfitter and how its projects fit together, read
6
+ [How AI Outfitter fits together](./ai-outfitter.md). To assess and onboard your
7
+ own organization, start with
6
8
  [Onboard an organization with an SDLC report](./usecases/org-onboarding-sdlc-report.md) —
7
9
  one engineer runs the maturity assessment, then creates the org `.agents`
8
10
  repository with the baseline report as its first commit.
@@ -48,7 +50,7 @@ The same composition runs on every surface; only the trigger changes.
48
50
 
49
51
  - [Running an agent in GitHub Actions](./actions.md) — headless runs on any workflow trigger.
50
52
  - [Channels](./channels.md) — add external event sources that wake a resident agent only when work arrives.
51
- - [Container images](./containers.md) — run the published Debian-based image persistently, extend it with apt, or use the `-nix` variant.
53
+ - [Container images](./containers.md) — run the published Debian-based image persistently or extend it with apt.
52
54
  - [Recurring runs](./recurring-runs.md) — loops three ways: the local loop extension, Actions cron, cluster schedules.
53
55
  - [Cost estimation](./cost-estimation.md) — one workload profile and model-cost line across local, Actions, and Kubernetes runs.
54
56
  - [In-cluster agents](./in-cluster.md) — resident agents, CronJobs, and subagent Jobs via Link Operator.