@ai-outfitter/outfitter 1.7.0 → 1.8.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 (74) hide show
  1. package/code/pi-extension/src/outfitter-extension.js +7 -1
  2. package/code/pi-extension/src/outfitter-runtime-extension.js +8 -17
  3. package/dist/agents/AgentLaunch.d.ts +1 -0
  4. package/dist/agents/AgentLaunch.js +4 -3
  5. package/dist/agents/AgentLaunch.js.map +1 -1
  6. package/dist/cli/TerminalLoading.d.ts +2 -0
  7. package/dist/cli/TerminalLoading.js +28 -0
  8. package/dist/cli/TerminalLoading.js.map +1 -0
  9. package/dist/cli/commands/PiRuntimeLaunch.d.ts +0 -1
  10. package/dist/cli/commands/PiRuntimeLaunch.js +1 -3
  11. package/dist/cli/commands/PiRuntimeLaunch.js.map +1 -1
  12. package/dist/cli/commands/RunAgentCommand.d.ts +6 -0
  13. package/dist/cli/commands/RunAgentCommand.js +60 -21
  14. package/dist/cli/commands/RunAgentCommand.js.map +1 -1
  15. package/dist/cli/commands/SetupCommand.d.ts +4 -0
  16. package/dist/cli/commands/SetupCommand.js +16 -7
  17. package/dist/cli/commands/SetupCommand.js.map +1 -1
  18. package/dist/cli.d.ts +12 -1
  19. package/dist/cli.js +92 -1
  20. package/dist/cli.js.map +1 -1
  21. package/dist/extensions/PiExtensionCache.d.ts +3 -0
  22. package/dist/extensions/PiExtensionCache.js +4 -3
  23. package/dist/extensions/PiExtensionCache.js.map +1 -1
  24. package/dist/paths/OutfitterCache.d.ts +2 -0
  25. package/dist/paths/OutfitterCache.js +8 -0
  26. package/dist/paths/OutfitterCache.js.map +1 -1
  27. package/dist/projection/Materialize.d.ts +2 -0
  28. package/dist/projection/Materialize.js +29 -1
  29. package/dist/projection/Materialize.js.map +1 -1
  30. package/dist/projection/ProjectHarness.js +12 -9
  31. package/dist/projection/ProjectHarness.js.map +1 -1
  32. package/dist/resolver/ResolverContext.d.ts +2 -0
  33. package/dist/resolver/ResolverContext.js +1 -0
  34. package/dist/resolver/ResolverContext.js.map +1 -1
  35. package/dist/schemas/settings.schema.json +11 -0
  36. package/dist/settings/Settings.d.ts +4 -0
  37. package/dist/settings/Settings.js.map +1 -1
  38. package/dist/settings/SettingsLoader.js +4 -1
  39. package/dist/settings/SettingsLoader.js.map +1 -1
  40. package/dist/settings/SettingsMerger.js +3 -0
  41. package/dist/settings/SettingsMerger.js.map +1 -1
  42. package/dist/setup/DefaultCatalog.d.ts +1 -1
  43. package/dist/setup/DefaultCatalog.js +1 -1
  44. package/dist/setup/Setup.d.ts +1 -0
  45. package/dist/setup/Setup.js +16 -5
  46. package/dist/setup/Setup.js.map +1 -1
  47. package/dist/telemetry/CiEnvironment.d.ts +6 -0
  48. package/dist/telemetry/CiEnvironment.js +4 -0
  49. package/dist/telemetry/CiEnvironment.js.map +1 -0
  50. package/dist/telemetry/TelemetryConsent.d.ts +8 -0
  51. package/dist/telemetry/TelemetryConsent.js +39 -0
  52. package/dist/telemetry/TelemetryConsent.js.map +1 -0
  53. package/dist/telemetry/TelemetryConstants.d.ts +4 -0
  54. package/dist/telemetry/TelemetryConstants.js +5 -0
  55. package/dist/telemetry/TelemetryConstants.js.map +1 -0
  56. package/dist/telemetry/TelemetryContext.d.ts +15 -0
  57. package/dist/telemetry/TelemetryContext.js +13 -0
  58. package/dist/telemetry/TelemetryContext.js.map +1 -0
  59. package/dist/telemetry/TelemetryService.d.ts +57 -0
  60. package/dist/telemetry/TelemetryService.js +157 -0
  61. package/dist/telemetry/TelemetryService.js.map +1 -0
  62. package/dist/telemetry/TelemetryState.d.ts +11 -0
  63. package/dist/telemetry/TelemetryState.js +51 -0
  64. package/dist/telemetry/TelemetryState.js.map +1 -0
  65. package/dist/version/OutfitterVersion.js +6 -3
  66. package/dist/version/OutfitterVersion.js.map +1 -1
  67. package/docs/documentation/README.md +4 -1
  68. package/docs/documentation/channels.md +112 -0
  69. package/docs/documentation/cli.md +13 -0
  70. package/docs/documentation/settings.md +5 -0
  71. package/docs/documentation/support-matrix.md +3 -2
  72. package/docs/documentation/telemetry.md +70 -0
  73. package/package.json +5 -3
  74. package/src/schemas/settings.schema.json +11 -0
@@ -8,7 +8,7 @@ export const defaultCatalogSource = {
8
8
  github: 'ai-outfitter/default-profiles',
9
9
  // TODO(release-automation): when default-profiles publishes a new Release Please tag, open a
10
10
  // conventional dependency-bump commit in Outfitter so its next Release Please release ships it.
11
- ref: 'v1.1.0',
11
+ ref: 'v1.1.1',
12
12
  };
13
13
  // A recognized payload marker must be a real directory, not merely a path that exists: a repository
14
14
  // committing a regular file named `agents` is not a catalog and must not validate as one.
@@ -34,6 +34,7 @@ export interface SetupResult {
34
34
  readonly defaultHarness: Harness;
35
35
  readonly messages: readonly string[];
36
36
  }
37
+ export declare const setupNextStepMessage = "Run 'outfitter sync', then run 'outfitter' again. Pseudonymous usage analytics are on by default; turn them off with telemetry.enabled: false in ~/.agents/settings.yml.";
37
38
  export declare const sanitizeAgentSlug: (raw: string) => string;
38
39
  /** Returns the profiles shown by the original default-catalog setup picker. */
39
40
  export declare const discoverSetupAgentChoices: (input: {
@@ -4,6 +4,17 @@ import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, s
4
4
  import { dirname, join } from 'node:path';
5
5
  import { HARNESSES } from '../settings/Settings.js';
6
6
  import { defaultCatalogSource } from './DefaultCatalog.js';
7
+ export const setupNextStepMessage = "Run 'outfitter sync', then run 'outfitter' again. Pseudonymous usage analytics are on by default; turn them off with telemetry.enabled: false in ~/.agents/settings.yml.";
8
+ const telemetrySettingsHint = [
9
+ '# Pseudonymous product analytics. Set enabled: false to opt out.',
10
+ '# telemetry:',
11
+ '# enabled: false',
12
+ ].join('\n');
13
+ const appendTelemetrySettingsHint = (content) => {
14
+ if (content.includes(telemetrySettingsHint))
15
+ return content;
16
+ return `${content.trimEnd()}\n\n${telemetrySettingsHint}\n`;
17
+ };
7
18
  const defaultAgentSlug = 'assistant';
8
19
  const maxSlugLength = 64;
9
20
  const agentSlugPattern = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
@@ -114,16 +125,16 @@ const upsertDefaultCatalogSource = (content) => {
114
125
  };
115
126
  const createSettingsContent = (existing, selection) => {
116
127
  if (selection.setupMode === 'source') {
117
- return [
128
+ return appendTelemetrySettingsHint([
118
129
  `default_harness: ${selection.harness}`,
119
130
  'remote_settings:',
120
131
  ` - uri: ${JSON.stringify(selection.sourceUri)}`,
121
132
  ' path: settings.yml',
122
133
  '',
123
- ].join('\n');
134
+ ].join('\n'));
124
135
  }
125
136
  if (selection.setupMode === 'catalog') {
126
- return [
137
+ return appendTelemetrySettingsHint([
127
138
  ...(selection.privateCatalogsEnabled && selection.target === 'home'
128
139
  ? ['enterprise:', ' private_catalogs: true']
129
140
  : []),
@@ -133,11 +144,11 @@ const createSettingsContent = (existing, selection) => {
133
144
  ` ref: ${selection.ref}`,
134
145
  ` path: ${selection.settingsPath}`,
135
146
  '',
136
- ].join('\n');
147
+ ].join('\n'));
137
148
  }
138
149
  let content = replaceOrAppendScalar(existing, 'default_agent', String(selection.agentId));
139
150
  content = replaceOrAppendScalar(content, 'default_harness', selection.harness);
140
- return selection.setupMode === 'default' ? upsertDefaultCatalogSource(content) : content;
151
+ return appendTelemetrySettingsHint(selection.setupMode === 'default' ? upsertDefaultCatalogSource(content) : content);
141
152
  };
142
153
  const enablePrivateCatalogs = (content) => {
143
154
  if (/^\s*private_catalogs:\s*true\s*$/mu.test(content))
@@ -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":"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"}
@@ -0,0 +1,6 @@
1
+ export interface DetectedCi {
2
+ readonly isCI: boolean;
3
+ readonly vendorId: string | null;
4
+ }
5
+ export declare const normalizeCiVendorId: (vendorId: string | null) => string | null;
6
+ export declare const detectCi: () => DetectedCi;
@@ -0,0 +1,4 @@
1
+ import { id, isCI } from 'ci-info';
2
+ export const normalizeCiVendorId = (vendorId) => vendorId === null ? null : vendorId.toLowerCase();
3
+ export const detectCi = () => ({ isCI, vendorId: normalizeCiVendorId(id) });
4
+ //# sourceMappingURL=CiEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CiEnvironment.js","sourceRoot":"","sources":["../../src/telemetry/CiEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAOnC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAuB,EAAiB,EAAE,CAC5E,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SettingsLoadResult } from '../settings/SettingsLoader.js';
2
+ export type TelemetryConsentSource = 'default' | 'user settings' | 'user-local settings' | 'project settings' | 'project-local settings' | 'invalid settings' | 'OUTFITTER_TELEMETRY' | 'DO_NOT_TRACK';
3
+ export interface TelemetryConsent {
4
+ readonly enabled: boolean;
5
+ readonly source: TelemetryConsentSource;
6
+ }
7
+ export type TelemetryEnvironment = Readonly<Record<string, string | undefined>>;
8
+ export declare const resolveTelemetryConsent: (loaded: SettingsLoadResult, env: TelemetryEnvironment) => TelemetryConsent;
@@ -0,0 +1,39 @@
1
+ const localSource = (file) => {
2
+ switch (file.location.scope) {
3
+ case 'user':
4
+ return 'user settings';
5
+ case 'user-local':
6
+ return 'user-local settings';
7
+ case 'project':
8
+ return 'project settings';
9
+ case 'project-local':
10
+ return 'project-local settings';
11
+ case 'remote':
12
+ return undefined;
13
+ }
14
+ };
15
+ const environmentConsent = (env) => {
16
+ if (env.OUTFITTER_TELEMETRY === '0')
17
+ return { enabled: false, source: 'OUTFITTER_TELEMETRY' };
18
+ if (env.DO_NOT_TRACK === '1')
19
+ return { enabled: false, source: 'DO_NOT_TRACK' };
20
+ return undefined;
21
+ };
22
+ export const resolveTelemetryConsent = (loaded, env) => {
23
+ const killed = environmentConsent(env);
24
+ if (killed !== undefined)
25
+ return killed;
26
+ if (loaded.issues.length > 0)
27
+ return { enabled: false, source: 'invalid settings' };
28
+ // Any local opt-out wins. Remote settings are deliberately excluded from consent.
29
+ const disabled = loaded.files.findLast((file) => localSource(file) !== undefined && file.settings.telemetry?.enabled === false);
30
+ if (disabled !== undefined)
31
+ return { enabled: false, source: localSource(disabled) };
32
+ // Only settings owned by the user may explicitly enable collection.
33
+ const enabled = loaded.files.findLast((file) => (file.location.scope === 'user' || file.location.scope === 'user-local') &&
34
+ file.settings.telemetry?.enabled === true);
35
+ if (enabled !== undefined)
36
+ return { enabled: true, source: localSource(enabled) };
37
+ return { enabled: true, source: 'default' };
38
+ };
39
+ //# sourceMappingURL=TelemetryConsent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryConsent.js","sourceRoot":"","sources":["../../src/telemetry/TelemetryConsent.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,GAAG,CAAC,IAAwB,EAAsC,EAAE;IACnF,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5B,KAAK,MAAM;YACT,OAAO,eAAe,CAAC;QACzB,KAAK,YAAY;YACf,OAAO,qBAAqB,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,kBAAkB,CAAC;QAC5B,KAAK,eAAe;YAClB,OAAO,wBAAwB,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,GAAyB,EAAgC,EAAE;IACrF,IAAI,GAAG,CAAC,mBAAmB,KAAK,GAAG;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAC9F,IAAI,GAAG,CAAC,YAAY,KAAK,GAAG;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAChF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAA0B,EAAE,GAAyB,EAAoB,EAAE;IACjH,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAEpF,kFAAkF;IAClF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK,CACxF,CAAC;IACF,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAE,EAAE,CAAC;IAEtF,oEAAoE;IACpE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CACnC,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,YAAY,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAC5C,CAAC;IACF,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAE,EAAE,CAAC;IAEnF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC9C,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** PostHog project configuration. An empty key makes telemetry completely inert. */
2
+ export declare const POSTHOG_API_KEY = "";
3
+ export declare const POSTHOG_HOST = "https://us.i.posthog.com";
4
+ export declare const TELEMETRY_SHUTDOWN_BUDGET_MS = 1000;
@@ -0,0 +1,5 @@
1
+ /** PostHog project configuration. An empty key makes telemetry completely inert. */
2
+ export const POSTHOG_API_KEY = '';
3
+ export const POSTHOG_HOST = 'https://us.i.posthog.com';
4
+ export const TELEMETRY_SHUTDOWN_BUDGET_MS = 1000;
5
+ //# sourceMappingURL=TelemetryConstants.js.map
@@ -0,0 +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"}
@@ -0,0 +1,15 @@
1
+ import type { SettingsLoadResult } from '../settings/SettingsLoader.js';
2
+ import type { TelemetryEnvironment } from './TelemetryConsent.js';
3
+ import type { DetectedCi } from './CiEnvironment.js';
4
+ import type { TelemetryStateStore } from './TelemetryState.js';
5
+ export interface TelemetryContextInput {
6
+ readonly homeDirectory: string;
7
+ readonly projectDirectory: string;
8
+ readonly env: TelemetryEnvironment;
9
+ }
10
+ export interface TelemetryContext {
11
+ readonly settingsReader: () => SettingsLoadResult;
12
+ readonly stateStore: TelemetryStateStore;
13
+ readonly ci: DetectedCi;
14
+ }
15
+ export declare const createTelemetryContext: (input: TelemetryContextInput) => TelemetryContext;
@@ -0,0 +1,13 @@
1
+ // Composes the process-level telemetry collaborators used by the CLI entrypoint.
2
+ import { discoverSettingsLoadPlan, loadSettingsFiles } from '../settings/SettingsLoader.js';
3
+ import { detectCi } from './CiEnvironment.js';
4
+ import { createTelemetryStateStore, resolveTelemetryStatePath } from './TelemetryState.js';
5
+ export const createTelemetryContext = (input) => {
6
+ const plan = discoverSettingsLoadPlan(input);
7
+ return {
8
+ settingsReader: () => loadSettingsFiles(plan),
9
+ stateStore: createTelemetryStateStore(resolveTelemetryStatePath(input.homeDirectory, input.env)),
10
+ ci: detectCi(),
11
+ };
12
+ };
13
+ //# sourceMappingURL=TelemetryContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryContext.js","sourceRoot":"","sources":["../../src/telemetry/TelemetryContext.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAG5F,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAe3F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAA4B,EAAoB,EAAE;IACvF,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO;QACL,cAAc,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC7C,UAAU,EAAE,yBAAyB,CAAC,yBAAyB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAChG,EAAE,EAAE,QAAQ,EAAE;KACf,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import type { PostHogOptions } from 'posthog-node';
2
+ import type { SettingsLoadResult } from '../settings/SettingsLoader.js';
3
+ import type { TelemetryEnvironment } from './TelemetryConsent.js';
4
+ import type { TelemetryStateStore } from './TelemetryState.js';
5
+ import type { DetectedCi } from './CiEnvironment.js';
6
+ export type DurationBucket = '<1s' | '1-5s' | '5-30s' | '30s+';
7
+ export type WarningCountBucket = '0' | '1-5' | '5+' | 'unknown';
8
+ export type TelemetryOutcome = 'success' | 'error';
9
+ export interface TelemetryCommandContext {
10
+ readonly command: string;
11
+ readonly outfitterVersion: string;
12
+ readonly nodeVersion: string;
13
+ readonly platform: string;
14
+ readonly architecture: string;
15
+ readonly interactive: boolean;
16
+ readonly harness?: string;
17
+ readonly strict?: boolean;
18
+ }
19
+ export interface TelemetryCompletionContext extends TelemetryCommandContext {
20
+ readonly outcome: TelemetryOutcome;
21
+ readonly durationMs: number;
22
+ readonly exitCode: number;
23
+ }
24
+ export interface TelemetryClient {
25
+ capture(message: {
26
+ readonly distinctId: string;
27
+ readonly event: string;
28
+ readonly properties: Record<string, unknown>;
29
+ }): void | Promise<void>;
30
+ shutdown(timeoutMs?: number): Promise<void>;
31
+ }
32
+ export interface TelemetryClientOptions {
33
+ readonly host: string;
34
+ readonly disableGeoip: true;
35
+ readonly fetch: TelemetryFetch;
36
+ }
37
+ export type TelemetryFetch = NonNullable<PostHogOptions['fetch']>;
38
+ export type TelemetryClientFactory = (apiKey: string, options: TelemetryClientOptions) => TelemetryClient | Promise<TelemetryClient>;
39
+ export interface TelemetryService {
40
+ captureCommandStarted(context: TelemetryCommandContext): Promise<void>;
41
+ captureCommandCompleted(context: TelemetryCompletionContext): Promise<void>;
42
+ shutdown(): Promise<void>;
43
+ }
44
+ export interface TelemetryServiceDependencies {
45
+ readonly settingsReader: () => SettingsLoadResult;
46
+ readonly stateStore: TelemetryStateStore;
47
+ readonly env: TelemetryEnvironment;
48
+ readonly ci: DetectedCi;
49
+ readonly writeError: (message: string) => void;
50
+ readonly apiKey?: string;
51
+ readonly clientFactory?: TelemetryClientFactory;
52
+ readonly shutdownBudgetMs?: number;
53
+ }
54
+ export declare const createBoundedTelemetryFetch: (fetchImplementation: typeof globalThis.fetch, budgetMs: number) => TelemetryFetch;
55
+ export declare const buildCommandStartedProperties: (context: TelemetryCommandContext, ci: DetectedCi) => Record<string, unknown>;
56
+ export declare const buildCommandCompletedProperties: (context: TelemetryCompletionContext, ci: DetectedCi) => Record<string, unknown>;
57
+ export declare const createTelemetryService: (dependencies: TelemetryServiceDependencies) => TelemetryService;
@@ -0,0 +1,157 @@
1
+ import { HARNESSES } from '../settings/Settings.js';
2
+ import { POSTHOG_API_KEY, POSTHOG_HOST, TELEMETRY_SHUTDOWN_BUDGET_MS } from './TelemetryConstants.js';
3
+ import { resolveTelemetryConsent } from './TelemetryConsent.js';
4
+ const OS_FAMILIES = ['aix', 'android', 'darwin', 'freebsd', 'linux', 'openbsd', 'sunos', 'win32', 'unknown'];
5
+ const ARCHITECTURES = [
6
+ 'arm',
7
+ 'arm64',
8
+ 'ia32',
9
+ 'loong64',
10
+ 'mips',
11
+ 'mipsel',
12
+ 'ppc',
13
+ 'ppc64',
14
+ 'riscv64',
15
+ 's390',
16
+ 's390x',
17
+ 'x64',
18
+ 'unknown',
19
+ ];
20
+ const defaultClientFactory = async (apiKey, options) => {
21
+ const { PostHog } = await import('posthog-node');
22
+ return new PostHog(apiKey, options);
23
+ };
24
+ const syntheticSuccess = () => ({
25
+ status: 200,
26
+ text: () => Promise.resolve(''),
27
+ json: () => Promise.resolve({}),
28
+ headers: { get: () => null },
29
+ body: null,
30
+ });
31
+ export const createBoundedTelemetryFetch = (fetchImplementation, budgetMs) => async (url, options) => {
32
+ try {
33
+ // Leave time for the SDK to finish its queue drain before its own shutdown timer fires.
34
+ const requestBudgetMs = Math.max(1, budgetMs - Math.min(50, budgetMs / 2));
35
+ const signal = AbortSignal.timeout(requestBudgetMs);
36
+ const deadline = new Promise((resolve) => {
37
+ signal.addEventListener('abort', () => resolve(syntheticSuccess()), { once: true });
38
+ });
39
+ const request = fetchImplementation(url, { ...options, signal });
40
+ const response = await Promise.race([request, deadline]);
41
+ if (response.status >= 200 && response.status < 300)
42
+ return response;
43
+ void response.body?.cancel().catch(() => undefined);
44
+ return syntheticSuccess();
45
+ }
46
+ catch {
47
+ return syntheticSuccess();
48
+ }
49
+ };
50
+ const durationBucket = (milliseconds) => {
51
+ if (milliseconds < 1000)
52
+ return '<1s';
53
+ if (milliseconds < 5000)
54
+ return '1-5s';
55
+ if (milliseconds < 30_000)
56
+ return '5-30s';
57
+ return '30s+';
58
+ };
59
+ const knownValue = (values, value) => values.includes(value) ? value : 'unknown';
60
+ export const buildCommandStartedProperties = (context, ci) => ({
61
+ command: context.command,
62
+ outfitter_version: context.outfitterVersion,
63
+ node_major: Number.parseInt(context.nodeVersion.split('.')[0], 10),
64
+ os_family: knownValue(OS_FAMILIES, context.platform),
65
+ arch: knownValue(ARCHITECTURES, context.architecture),
66
+ interactive: context.interactive,
67
+ harness: knownValue(HARNESSES, context.harness ?? 'unknown'),
68
+ strict: context.strict === true,
69
+ is_ci: ci.isCI,
70
+ ci_name: ci.isCI ? (ci.vendorId ?? 'unknown') : 'none',
71
+ $process_person_profile: false,
72
+ });
73
+ export const buildCommandCompletedProperties = (context, ci) => ({
74
+ ...buildCommandStartedProperties(context, ci),
75
+ outcome: context.outcome,
76
+ duration_bucket: durationBucket(context.durationMs),
77
+ exit_code_class: context.exitCode === 0 ? 'success' : 'error',
78
+ warning_count_bucket: 'unknown',
79
+ });
80
+ const NOTICE = [
81
+ 'Outfitter sends pseudonymous command adoption and reliability analytics',
82
+ 'to PostHog. No content, paths, or free-form arguments are collected.',
83
+ "Opt out: set 'telemetry.enabled: false' in ~/.agents/settings.yml, or set",
84
+ 'OUTFITTER_TELEMETRY=0 / DO_NOT_TRACK=1.',
85
+ 'Details:',
86
+ 'https://github.com/ai-outfitter/outfitter/blob/main/docs/documentation/telemetry.md',
87
+ ].join('\n');
88
+ export const createTelemetryService = (dependencies) => {
89
+ /* v8 ignore next -- tests never consume a compiled production key; they inject an empty or test key. */
90
+ const apiKey = dependencies.apiKey ?? POSTHOG_API_KEY;
91
+ const shutdownBudgetMs = dependencies.shutdownBudgetMs ?? TELEMETRY_SHUTDOWN_BUDGET_MS;
92
+ const clientFactory = dependencies.clientFactory ?? defaultClientFactory;
93
+ const ci = dependencies.ci;
94
+ let client;
95
+ let distinctId;
96
+ let prepared;
97
+ // Consent, client, and state are resolved once per process.
98
+ const prepare = async () => {
99
+ if (prepared !== undefined)
100
+ return prepared;
101
+ prepared = false;
102
+ // An empty compiled key keeps telemetry fully inert: no client, no consent read, no state access.
103
+ if (apiKey === '')
104
+ return false;
105
+ const consent = resolveTelemetryConsent(dependencies.settingsReader(), dependencies.env);
106
+ if (!consent.enabled) {
107
+ if (!ci.isCI)
108
+ dependencies.stateStore.delete();
109
+ return false;
110
+ }
111
+ client = await clientFactory(apiKey, {
112
+ host: POSTHOG_HOST,
113
+ disableGeoip: true,
114
+ fetch: createBoundedTelemetryFetch(globalThis.fetch.bind(globalThis), shutdownBudgetMs),
115
+ });
116
+ if (ci.isCI) {
117
+ distinctId = `ci.${ci.vendorId ?? 'unknown'}`;
118
+ }
119
+ else {
120
+ const state = dependencies.stateStore.readOrCreate();
121
+ distinctId = state.installation_id;
122
+ if (!state.notice_shown) {
123
+ dependencies.stateStore.recordNoticeShown(state);
124
+ dependencies.writeError(NOTICE);
125
+ }
126
+ }
127
+ prepared = true;
128
+ return true;
129
+ };
130
+ const capture = async (event, properties) => {
131
+ try {
132
+ if (!(await prepare()))
133
+ return;
134
+ const result = client.capture({ distinctId: distinctId, event, properties });
135
+ // The SDK queues synchronously. A non-standard client promise is observed but never allowed to delay the CLI.
136
+ void Promise.resolve(result).catch(() => undefined);
137
+ }
138
+ catch {
139
+ // Analytics must never affect command behavior or emit diagnostics.
140
+ }
141
+ };
142
+ return {
143
+ captureCommandStarted: (context) => capture('cli command started', buildCommandStartedProperties(context, ci)),
144
+ captureCommandCompleted: (context) => capture('cli command completed', buildCommandCompletedProperties(context, ci)),
145
+ async shutdown() {
146
+ if (client === undefined)
147
+ return;
148
+ try {
149
+ await client.shutdown(shutdownBudgetMs);
150
+ }
151
+ catch {
152
+ // Analytics must never affect command behavior or emit diagnostics.
153
+ }
154
+ },
155
+ };
156
+ };
157
+ //# sourceMappingURL=TelemetryService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryService.js","sourceRoot":"","sources":["../../src/telemetry/TelemetryService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAKhE,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AACtH,MAAM,aAAa,GAAG;IACpB,KAAK;IACL,OAAO;IACP,MAAM;IACN,SAAS;IACT,MAAM;IACN,QAAQ;IACR,KAAK;IACL,OAAO;IACP,SAAS;IACT,MAAM;IACN,OAAO;IACP,KAAK;IACL,SAAS;CACD,CAAC;AA+DX,MAAM,oBAAoB,GAA2B,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAC7E,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACjD,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAA2B,EAAE,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;IAC5B,IAAI,EAAE,IAAI;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GACtC,CAAC,mBAA4C,EAAE,QAAgB,EAAkB,EAAE,CACnF,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,wFAAwF;QACxF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,EAAE;YAC/D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;YAAE,OAAO,QAAQ,CAAC;QACrE,KAAK,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC,CAAC;AAEJ,MAAM,cAAc,GAAG,CAAC,YAAoB,EAAkB,EAAE;IAC9D,IAAI,YAAY,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,YAAY,GAAG,IAAI;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,YAAY,GAAG,MAAM;QAAE,OAAO,OAAO,CAAC;IAC1C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAmB,MAAoB,EAAE,KAAa,EAAiB,EAAE,CAC1F,MAAM,CAAC,QAAQ,CAAC,KAAU,CAAC,CAAC,CAAC,CAAE,KAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAEzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,OAAgC,EAChC,EAAc,EACW,EAAE,CAAC,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;IAC3C,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAClE,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC;IACpD,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC,WAAW;IAChC,OAAO,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC;IAC5D,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;IAC/B,KAAK,EAAE,EAAE,CAAC,IAAI;IACd,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM;IACtD,uBAAuB,EAAE,KAAK;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,OAAmC,EACnC,EAAc,EACW,EAAE,CAAC,CAAC;IAC7B,GAAG,6BAA6B,CAAC,OAAO,EAAE,EAAE,CAAC;IAC7C,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,eAAe,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC;IACnD,eAAe,EAAE,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;IAC7D,oBAAoB,EAAE,SAAsC;CAC7D,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG;IACb,yEAAyE;IACzE,sEAAsE;IACtE,2EAA2E;IAC3E,yCAAyC;IACzC,UAAU;IACV,qFAAqF;CACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,YAA0C,EAAoB,EAAE;IACrG,wGAAwG;IACxG,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,eAAe,CAAC;IACtD,MAAM,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,IAAI,4BAA4B,CAAC;IACvF,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,IAAI,oBAAoB,CAAC;IACzE,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;IAC3B,IAAI,MAAmC,CAAC;IACxC,IAAI,UAA8B,CAAC;IACnC,IAAI,QAA6B,CAAC;IAElC,4DAA4D;IAC5D,MAAM,OAAO,GAAG,KAAK,IAAsB,EAAE;QAC3C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAC5C,QAAQ,GAAG,KAAK,CAAC;QACjB,kGAAkG;QAClG,IAAI,MAAM,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,uBAAuB,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,EAAE,CAAC,IAAI;gBAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;YACnC,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,2BAA2B,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;SACxF,CAAC,CAAC;QACH,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACZ,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;YACrD,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBACxB,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACjD,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,QAAQ,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,EAAE,KAAa,EAAE,UAAmC,EAAiB,EAAE;QAC1F,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC;gBAAE,OAAO;YAC/B,MAAM,MAAM,GAAG,MAAO,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,UAAW,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAC/E,8GAA8G;YAC9G,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,qBAAqB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,6BAA6B,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9G,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE,CACnC,OAAO,CAAC,uBAAuB,EAAE,+BAA+B,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChF,KAAK,CAAC,QAAQ;YACZ,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO;YACjC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;YACtE,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface TelemetryState {
2
+ readonly installation_id: string;
3
+ readonly notice_shown: boolean;
4
+ }
5
+ export interface TelemetryStateStore {
6
+ readOrCreate(): TelemetryState;
7
+ recordNoticeShown(state: TelemetryState): TelemetryState;
8
+ delete(): void;
9
+ }
10
+ export declare const resolveTelemetryStatePath: (homeDirectory: string, env: Readonly<Record<string, string | undefined>>) => string;
11
+ export declare const createTelemetryStateStore: (path: string, createId?: () => string) => TelemetryStateStore;
@@ -0,0 +1,51 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
3
+ import { dirname, join } from 'node:path';
4
+ import { resolveOutfitterStateDir } from '../paths/OutfitterCache.js';
5
+ export const resolveTelemetryStatePath = (homeDirectory, env) => join(resolveOutfitterStateDir(env, homeDirectory), 'telemetry.json');
6
+ const isTelemetryState = (value) => {
7
+ if (value === null || typeof value !== 'object')
8
+ return false;
9
+ const candidate = value;
10
+ return typeof candidate.installation_id === 'string' && typeof candidate.notice_shown === 'boolean';
11
+ };
12
+ export const createTelemetryStateStore = (path, createId = randomUUID) => {
13
+ const write = (state) => {
14
+ const directory = dirname(path);
15
+ const temporaryPath = join(directory, `.telemetry-${randomUUID()}.tmp`);
16
+ mkdirSync(directory, { recursive: true });
17
+ try {
18
+ writeFileSync(temporaryPath, `${JSON.stringify(state, null, 2)}\n`, { mode: 0o600 });
19
+ renameSync(temporaryPath, path);
20
+ }
21
+ finally {
22
+ rmSync(temporaryPath, { force: true });
23
+ }
24
+ };
25
+ return {
26
+ readOrCreate() {
27
+ if (existsSync(path)) {
28
+ try {
29
+ const parsed = JSON.parse(readFileSync(path, 'utf8'));
30
+ if (isTelemetryState(parsed))
31
+ return parsed;
32
+ }
33
+ catch {
34
+ // A partial or corrupt state file is replaced with a fresh pseudonymous identifier.
35
+ }
36
+ }
37
+ const state = { installation_id: createId(), notice_shown: false };
38
+ write(state);
39
+ return state;
40
+ },
41
+ recordNoticeShown(state) {
42
+ const updated = { ...state, notice_shown: true };
43
+ write(updated);
44
+ return updated;
45
+ },
46
+ delete() {
47
+ rmSync(path, { force: true });
48
+ },
49
+ };
50
+ };
51
+ //# sourceMappingURL=TelemetryState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryState.js","sourceRoot":"","sources":["../../src/telemetry/TelemetryState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAatE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,aAAqB,EACrB,GAAiD,EACzC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAElF,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA2B,EAAE;IACnE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,OAAO,OAAO,SAAS,CAAC,eAAe,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,YAAY,KAAK,SAAS,CAAC;AACtG,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAAE,WAAyB,UAAU,EAAuB,EAAE;IAClH,MAAM,KAAK,GAAG,CAAC,KAAqB,EAAQ,EAAE;QAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,UAAU,EAAE,MAAM,CAAC,CAAC;QACxE,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,aAAa,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACrF,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,YAAY;YACV,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC/D,IAAI,gBAAgB,CAAC,MAAM,CAAC;wBAAE,OAAO,MAAM,CAAC;gBAC9C,CAAC;gBAAC,MAAM,CAAC;oBACP,oFAAoF;gBACtF,CAAC;YACH,CAAC;YACD,MAAM,KAAK,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;YACnE,KAAK,CAAC,KAAK,CAAC,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,iBAAiB,CAAC,KAAqB;YACrC,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YACjD,KAAK,CAAC,OAAO,CAAC,CAAC;YACf,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM;YACJ,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,8 +1,11 @@
1
1
  // Reads the installed Outfitter package version for CLI output and runtime branding.
2
2
  import { readFileSync } from 'node:fs';
3
+ let cachedVersion;
3
4
  export const readOutfitterVersion = () => {
4
- const packageJsonPath = new URL('../../package.json', import.meta.url);
5
- const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
6
- return packageJson.version;
5
+ if (cachedVersion === undefined) {
6
+ const packageJsonPath = new URL('../../package.json', import.meta.url);
7
+ cachedVersion = JSON.parse(readFileSync(packageJsonPath, 'utf8')).version;
8
+ }
9
+ return cachedVersion;
7
10
  };
8
11
  //# sourceMappingURL=OutfitterVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OutfitterVersion.js","sourceRoot":"","sources":["../../src/version/OutfitterVersion.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAW,EAAE;IAC/C,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAiC,CAAC;IAEtG,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC,CAAC"}
1
+ {"version":3,"file":"OutfitterVersion.js","sourceRoot":"","sources":["../../src/version/OutfitterVersion.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,IAAI,aAAiC,CAAC;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAW,EAAE;IAC/C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,aAAa,GAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAkC,CAAC,OAAO,CAAC;IAC9G,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC"}
@@ -9,11 +9,12 @@ repository with the baseline report as its first commit.
9
9
 
10
10
  ## Climb the ramp (runbooks)
11
11
 
12
- One runbook per rung of [the adoption ramp](../philosophy.md#the-ramp-to-an-autonomous-lifecycle). Each starts where the previous one ended and closes with the one concrete step that begins the next rung. Their success checks are the signals an SDLC assessment reports, so "done" is something you run rather than something you judge.
12
+ One runbook per rung of [the adoption ramp](../philosophy.md#the-ramp-to-an-autonomous-lifecycle). Each starts where the previous one ended and closes with the one concrete step that begins the next rung. Every runbook ends in a check you run rather than a judgement you make — the first three against the signals an SDLC assessment reports, the last against the cluster directly.
13
13
 
14
14
  - [Share one catalog](../runbooks/share-one-catalog.md) — one pinned catalog the organization shares, instead of per-laptop configuration. (→ delegated)
15
15
  - [Run it without your laptop](../runbooks/run-without-your-laptop.md) — an event triggers the workflow, its output lands through review, and the session is captured. (→ automated)
16
16
  - [Give the agent a residence](../runbooks/give-the-agent-a-residence.md) — a named, assignable agent with an account and somewhere to live. (→ governed)
17
+ - [Continuously deployed Kubernetes agents with Actions](../runbooks/continuously-deployed-kubernetes-agents-with-actions.md) — a merge to the catalog moves the fleet, with no stored cluster credential. (deepens governed)
17
18
 
18
19
  ## Start (you)
19
20
 
@@ -46,6 +47,7 @@ One runbook per rung of [the adoption ramp](../philosophy.md#the-ramp-to-an-auto
46
47
  The same composition runs on every surface; only the trigger changes.
47
48
 
48
49
  - [Running an agent in GitHub Actions](./actions.md) — headless runs on any workflow trigger.
50
+ - [Channels](./channels.md) — add external event sources that wake a resident agent only when work arrives.
49
51
  - [Container images](./containers.md) — run the published Debian-based image persistently, extend it with apt, or use the `-nix` variant.
50
52
  - [Recurring runs](./recurring-runs.md) — loops three ways: the local loop extension, Actions cron, cluster schedules.
51
53
  - [In-cluster agents](./in-cluster.md) — resident agents, CronJobs, and subagent Jobs via Link Operator.
@@ -70,5 +72,6 @@ Each use case is a worked story — a problem, the composition that answers it,
70
72
  ## Reference
71
73
 
72
74
  - [CLI reference](./cli.md)
75
+ - [Telemetry](./telemetry.md)
73
76
  - [Migration from legacy profiles](./migration.md)
74
77
  - [Philosophy](../philosophy.md) — why Outfitter exists.