@cat-factory/integrations 0.103.3 → 0.105.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 (71) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/modules/documents/GitHubDocsProvider.d.ts +2 -6
  6. package/dist/modules/documents/GitHubDocsProvider.d.ts.map +1 -1
  7. package/dist/modules/documents/GitHubDocsProvider.js +2 -2
  8. package/dist/modules/documents/GitHubDocsProvider.js.map +1 -1
  9. package/dist/modules/environments/EnvironmentHandlerSeeder.d.ts +3 -7
  10. package/dist/modules/environments/EnvironmentHandlerSeeder.d.ts.map +1 -1
  11. package/dist/modules/environments/EnvironmentHandlerSeeder.js +0 -0
  12. package/dist/modules/environments/EnvironmentHandlerSeeder.js.map +1 -1
  13. package/dist/modules/environments/EnvironmentUserHandlerService.d.ts +2 -4
  14. package/dist/modules/environments/EnvironmentUserHandlerService.d.ts.map +1 -1
  15. package/dist/modules/environments/EnvironmentUserHandlerService.js +1 -1
  16. package/dist/modules/environments/EnvironmentUserHandlerService.js.map +1 -1
  17. package/dist/modules/kubernetes/KubernetesRunnerTransport.d.ts.map +1 -1
  18. package/dist/modules/kubernetes/KubernetesRunnerTransport.js +4 -3
  19. package/dist/modules/kubernetes/KubernetesRunnerTransport.js.map +1 -1
  20. package/dist/modules/runners/HttpRunnerPoolProvider.d.ts.map +1 -1
  21. package/dist/modules/runners/HttpRunnerPoolProvider.js +40 -4
  22. package/dist/modules/runners/HttpRunnerPoolProvider.js.map +1 -1
  23. package/dist/modules/runners/RunnerPoolConnectionService.d.ts +13 -2
  24. package/dist/modules/runners/RunnerPoolConnectionService.d.ts.map +1 -1
  25. package/dist/modules/runners/RunnerPoolConnectionService.js +31 -4
  26. package/dist/modules/runners/RunnerPoolConnectionService.js.map +1 -1
  27. package/dist/modules/runners/runner-backends.d.ts +9 -1
  28. package/dist/modules/runners/runner-backends.d.ts.map +1 -1
  29. package/dist/modules/runners/runner-backends.js +2 -1
  30. package/dist/modules/runners/runner-backends.js.map +1 -1
  31. package/dist/modules/runners/runners.logic.d.ts +36 -7
  32. package/dist/modules/runners/runners.logic.d.ts.map +1 -1
  33. package/dist/modules/runners/runners.logic.js +123 -15
  34. package/dist/modules/runners/runners.logic.js.map +1 -1
  35. package/dist/modules/tasks/BugHuntService.d.ts +73 -0
  36. package/dist/modules/tasks/BugHuntService.d.ts.map +1 -0
  37. package/dist/modules/tasks/BugHuntService.js +175 -0
  38. package/dist/modules/tasks/BugHuntService.js.map +1 -0
  39. package/dist/modules/tasks/GitHubIssuesProvider.d.ts +27 -1
  40. package/dist/modules/tasks/GitHubIssuesProvider.d.ts.map +1 -1
  41. package/dist/modules/tasks/GitHubIssuesProvider.js +51 -12
  42. package/dist/modules/tasks/GitHubIssuesProvider.js.map +1 -1
  43. package/dist/modules/tasks/JiraProvider.d.ts +18 -1
  44. package/dist/modules/tasks/JiraProvider.d.ts.map +1 -1
  45. package/dist/modules/tasks/JiraProvider.js +47 -0
  46. package/dist/modules/tasks/JiraProvider.js.map +1 -1
  47. package/dist/modules/tasks/LinearTaskProvider.d.ts +16 -1
  48. package/dist/modules/tasks/LinearTaskProvider.d.ts.map +1 -1
  49. package/dist/modules/tasks/LinearTaskProvider.js +41 -1
  50. package/dist/modules/tasks/LinearTaskProvider.js.map +1 -1
  51. package/dist/modules/tasks/TaskLinkService.d.ts +10 -2
  52. package/dist/modules/tasks/TaskLinkService.d.ts.map +1 -1
  53. package/dist/modules/tasks/TaskLinkService.js +8 -1
  54. package/dist/modules/tasks/TaskLinkService.js.map +1 -1
  55. package/dist/modules/tasks/TrackerWebhookService.d.ts +3 -3
  56. package/dist/modules/tasks/TrackerWebhookService.d.ts.map +1 -1
  57. package/dist/modules/tasks/TrackerWebhookService.js +1 -2
  58. package/dist/modules/tasks/TrackerWebhookService.js.map +1 -1
  59. package/dist/modules/tasks/github-issues.logic.d.ts +25 -1
  60. package/dist/modules/tasks/github-issues.logic.d.ts.map +1 -1
  61. package/dist/modules/tasks/github-issues.logic.js +73 -1
  62. package/dist/modules/tasks/github-issues.logic.js.map +1 -1
  63. package/dist/modules/tasks/jira.logic.d.ts +25 -1
  64. package/dist/modules/tasks/jira.logic.d.ts.map +1 -1
  65. package/dist/modules/tasks/jira.logic.js +62 -0
  66. package/dist/modules/tasks/jira.logic.js.map +1 -1
  67. package/dist/modules/tasks/linear.logic.d.ts +53 -1
  68. package/dist/modules/tasks/linear.logic.d.ts.map +1 -1
  69. package/dist/modules/tasks/linear.logic.js +62 -0
  70. package/dist/modules/tasks/linear.logic.js.map +1 -1
  71. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"RunnerPoolConnectionService.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/RunnerPoolConnectionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RunnerPoolConnectionService.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/RunnerPoolConnectionService.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
+ import { noopLogger } from '@cat-factory/kernel';
1
2
  import { ConflictError, ValidationError } from '@cat-factory/kernel';
2
3
  import { requireWorkspace } from '@cat-factory/kernel';
3
4
  import { missingRequiredConfigKeys } from '../environments/environments.logic.js';
4
5
  export class RunnerPoolConnectionService {
5
6
  deps;
7
+ log;
6
8
  constructor(deps) {
7
9
  this.deps = deps;
10
+ this.log = deps.logger ?? noopLogger;
8
11
  }
9
12
  /** The per-call context a backend provider needs to build/test a transport. */
10
13
  context(resolveSecret) {
@@ -54,6 +57,19 @@ export class RunnerPoolConnectionService {
54
57
  deletedAt: null,
55
58
  };
56
59
  await this.deps.runnerPoolConnectionRepository.upsert(record);
60
+ // Each gap the provider reports costs a recovery/cleanup path that is otherwise invisible
61
+ // until an incident (a release-less manifest leaks a runner on every cancelled run). Log it
62
+ // at REGISTRATION rather than per dispatch, where `resolve()` would re-emit the same line
63
+ // for every job. This is the deployment-operator's copy; the person who pasted the config
64
+ // sees the same gaps on their connection test, which is the surface they are looking at.
65
+ for (const warning of provider.warnings?.(config) ?? []) {
66
+ this.log.warn(`Runner backend registered with a gap: ${warning.message}`, {
67
+ workspaceId,
68
+ kind: config.kind,
69
+ providerId: meta.providerId,
70
+ warning: warning.code,
71
+ });
72
+ }
57
73
  return this.toConnection(record, Object.keys(input.secrets));
58
74
  }
59
75
  /** Rotate/replace the secret bundle without re-sending the config. */
@@ -144,15 +160,26 @@ export class RunnerPoolConnectionService {
144
160
  : {}),
145
161
  };
146
162
  }
147
- /** Probe a candidate backend connection before saving (nothing is persisted). */
163
+ /**
164
+ * Probe a candidate backend connection before saving (nothing is persisted), and report the
165
+ * config's non-fatal gaps alongside the probe.
166
+ *
167
+ * The gaps ride the test rather than a surface of their own because this is the one moment
168
+ * the operator is looking at THIS config, and they are the same person who can fix it. They
169
+ * are independent of `ok`: a manifest with no `release` template connects perfectly well and
170
+ * still leaks a runner on every cancelled run.
171
+ */
148
172
  async testConnection(workspaceId, input) {
149
173
  await requireWorkspace(this.deps.workspaceRepository, workspaceId);
150
174
  if (!input.config)
151
175
  return { ok: true, message: 'Nothing to test.' };
152
- const provider = this.provider(input.config.kind);
153
- provider.assertConfigSafe(input.config, this.safetyOptions());
176
+ const config = input.config;
177
+ const provider = this.provider(config.kind);
178
+ provider.assertConfigSafe(config, this.safetyOptions());
154
179
  const secrets = input.secrets ?? {};
155
- return provider.testConnection(input.config, this.context((key) => secrets[key]));
180
+ const result = await provider.testConnection(config, this.context((key) => secrets[key]));
181
+ const warnings = provider.warnings?.(config) ?? [];
182
+ return warnings.length ? { ...result, warnings } : result;
156
183
  }
157
184
  /** The workspace's current connection (safe metadata), or null. */
158
185
  async getConnection(workspaceId) {
@@ -1 +1 @@
1
- {"version":3,"file":"RunnerPoolConnectionService.js","sourceRoot":"","sources":["../../../src/modules/runners/RunnerPoolConnectionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RunnerPoolConnectionService.js","sourceRoot":"","sources":["../../../src/modules/runners/RunnerPoolConnectionService.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ConnectionTestResult, ProviderConfigField, RunnerBackendConfig, RunnerPoolProvider, RunnerTransport, SecretResolver, UrlSafetyPolicy } from '@cat-factory/kernel';
1
+ import type { ConnectionTestResult, ConnectionWarning, ProviderConfigField, RunnerBackendConfig, RunnerPoolProvider, RunnerTransport, SecretResolver, UrlSafetyPolicy } from '@cat-factory/kernel';
2
2
  import { kubernetesRunnerBackend } from '../kubernetes/kubernetes-runner-backend.js';
3
3
  /** Per-call dependencies a provider may need to build/test its transport. */
4
4
  export interface RunnerBackendContext {
@@ -67,6 +67,14 @@ export interface RunnerBackendProvider {
67
67
  };
68
68
  /** Validate the config at the write boundary (SSRF / URL + runtime safety). Throws if unsafe. */
69
69
  assertConfigSafe(config: RunnerBackendConfig, opts?: RunnerBackendSafetyOptions): void;
70
+ /**
71
+ * Non-fatal gaps in an otherwise-valid config: logged once at registration AND returned on
72
+ * the connection test, which is where the operator actually sees them (a deployment log line
73
+ * reaches whoever reads logs, not whoever pasted the config). A backend describes its own
74
+ * gaps because only it can read its config shape — the connection service stays
75
+ * kind-agnostic. Absent ⇒ this backend reports none.
76
+ */
77
+ warnings?(config: RunnerBackendConfig): ConnectionWarning[];
70
78
  /** Build the live transport the execution engine dispatches/polls/releases through. */
71
79
  buildTransport(config: RunnerBackendConfig, ctx: RunnerBackendContext): RunnerTransport;
72
80
  /** Probe the backend without persisting anything. */
@@ -1 +1 @@
1
- {"version":3,"file":"runner-backends.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/runner-backends.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAK5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAA;AA2BpF,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,cAAc,CAAA;IAC7B,sFAAsF;IACtF,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED,0FAA0F;AAC1F,UAAU,0BAA0B;IAClC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,UAAU,iBAAiB;IACzB,MAAM,IAAI,mBAAmB,EAAE,CAAA;IAC/B,QAAQ,IAAI,mBAAmB,CAAA;IAC/B,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtE;AAED,MAAM,WAAW,qBAAqB;IAGpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACjC,yFAAyF;IACzF,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAAA;IAC3D,6EAA6E;IAC7E,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG;QAC3C,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,iGAAiG;IACjG,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;IACtF,uFAAuF;IACvF,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,GAAG,eAAe,CAAA;IACvF,qDAAqD;IACrD,cAAc,CACZ,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAAA;CACjC;AAED;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2C;IAE/D,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAG9C;IAED,uEAAuE;IACvE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAEnD;IAED,+EAA+E;IAC/E,KAAK,IAAI,MAAM,EAAE,CAEhB;IAED;;;OAGG;IACH,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAE5C;CACF;AAED,kFAAkF;AAClF,wBAAgB,4BAA4B,IAAI,qBAAqB,CAIpE;AASD,eAAO,MAAM,qBAAqB,EAAE,qBAoCnC,CAAA;AAOD,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
1
+ {"version":3,"file":"runner-backends.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/runner-backends.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAK5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAA;AA4BpF,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,cAAc,CAAA;IAC7B,sFAAsF;IACtF,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED,0FAA0F;AAC1F,UAAU,0BAA0B;IAClC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,UAAU,iBAAiB;IACzB,MAAM,IAAI,mBAAmB,EAAE,CAAA;IAC/B,QAAQ,IAAI,mBAAmB,CAAA;IAC/B,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtE;AAED,MAAM,WAAW,qBAAqB;IAGpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACjC,yFAAyF;IACzF,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAAA;IAC3D,6EAA6E;IAC7E,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG;QAC3C,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,iGAAiG;IACjG,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;IACtF;;;;;;OAMG;IACH,QAAQ,CAAC,CAAC,MAAM,EAAE,mBAAmB,GAAG,iBAAiB,EAAE,CAAA;IAC3D,uFAAuF;IACvF,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,GAAG,eAAe,CAAA;IACvF,qDAAqD;IACrD,cAAc,CACZ,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAAA;CACjC;AAED;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2C;IAE/D,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAG9C;IAED,uEAAuE;IACvE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAEnD;IAED,+EAA+E;IAC/E,KAAK,IAAI,MAAM,EAAE,CAEhB;IAED;;;OAGG;IACH,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAE5C;CACF;AAED,kFAAkF;AAClF,wBAAgB,4BAA4B,IAAI,qBAAqB,CAIpE;AASD,eAAO,MAAM,qBAAqB,EAAE,qBAqCnC,CAAA;AAOD,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
@@ -5,7 +5,7 @@ import { STRICT_URL_SAFETY_POLICY } from '@cat-factory/kernel';
5
5
  import { kubernetesRunnerBackend } from '../kubernetes/kubernetes-runner-backend.js';
6
6
  import { HttpRunnerPoolProvider } from './HttpRunnerPoolProvider.js';
7
7
  import { RunnerPoolTransport } from './RunnerPoolTransport.js';
8
- import { assertManifestUrlsSafe, referencedSecretKeys as manifestSecretKeys, } from './runners.logic.js';
8
+ import { assertManifestUrlsSafe, manifestWarnings, referencedSecretKeys as manifestSecretKeys, } from './runners.logic.js';
9
9
  /**
10
10
  * The app-owned registry of runner-backend providers, keyed by `kind`. Constructed by the
11
11
  * composition root (via {@link defaultRunnerBackendRegistry} / `createBackendRegistries`)
@@ -65,6 +65,7 @@ export const manifestRunnerBackend = {
65
65
  assertManifestUrlsSafe(config.manifest, opts?.urlPolicy ?? STRICT_URL_SAFETY_POLICY);
66
66
  }
67
67
  },
68
+ warnings: (config) => (config.kind === 'manifest' ? manifestWarnings(config.manifest) : []),
68
69
  buildTransport: (config, ctx) => {
69
70
  if (config.kind !== 'manifest')
70
71
  throw new Error('Expected a manifest runner config');
@@ -1 +1 @@
1
- {"version":3,"file":"runner-backends.js","sourceRoot":"","sources":["../../../src/modules/runners/runner-backends.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-backends.js","sourceRoot":"","sources":["../../../src/modules/runners/runner-backends.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,45 @@
1
- import type { RunnerJobState, RunnerPoolManifest, UrlSafetyPolicy } from '@cat-factory/kernel';
1
+ import type { ConnectionWarning, ContainerEvictionKind, RunnerJobState, RunnerPoolManifest, UrlSafetyPolicy } from '@cat-factory/kernel';
2
2
  /** Collect every secret key a manifest's auth scheme references. */
3
3
  export declare function referencedSecretKeys(manifest: RunnerPoolManifest): string[];
4
4
  /** Validate every URL a manifest will fetch (defence against SSRF). */
5
5
  export declare function assertManifestUrlsSafe(manifest: RunnerPoolManifest, policy?: UrlSafetyPolicy): void;
6
+ /** A poll's classified outcome: the canonical job state plus, on a loss, the eviction flavour. */
7
+ export interface RunnerJobStatusVerdict {
8
+ state: RunnerJobState;
9
+ /**
10
+ * Set only when the failure is the RUNNER vanishing rather than the job failing, so the
11
+ * engine engages its eviction recovery (a fresh pool member) instead of terminally failing
12
+ * the run. `crash` — a pool member is ordinary infrastructure, not the flagged, expected
13
+ * churn (`transient`) a facade mints for its own rollouts.
14
+ */
15
+ evicted?: ContainerEvictionKind;
16
+ }
6
17
  /**
7
- * Map a scheduler's status string onto the harness job state using the manifest's
8
- * `statusMap`. Falls back to interpreting the raw value as a state literal
9
- * (`running`/`done`/`failed`) when it matches one, else `running` — so a poll
10
- * that can't be classified keeps the driver waiting rather than wrongly failing.
18
+ * Classify a scheduler's status string into the canonical job state (+ an eviction verdict).
19
+ *
20
+ * Precedence: the manifest's own `statusMap` decides the STATE — an operator saying what their
21
+ * scheduler's words mean always wins — then the built-in vocabularies above cover the words a
22
+ * manifest didn't map. A resolved `failed` is additionally checked against
23
+ * {@link EVICTION_STATUSES} on the RAW word, so a manifest mapping `evicted → failed` still
24
+ * gets eviction recovery rather than a terminal failure.
25
+ *
26
+ * An UNRECOGNISED word still falls back to `running`, keeping the driver waiting: a scheduler
27
+ * vocabulary we don't know is far more likely to be a queue state (`provisioning`, `assigning`)
28
+ * than a death, and wrongly killing a live run is the worse error of the two. Such a run is
29
+ * still bounded by the poll budget, and the manifest can always map the word explicitly.
11
30
  */
12
- export declare function mapJobState(raw: string | undefined, statusMap: {
31
+ export declare function classifyJobStatus(raw: string | undefined, statusMap: {
13
32
  from: string;
14
33
  to: RunnerJobState;
15
- }[] | undefined): RunnerJobState;
34
+ }[] | undefined): RunnerJobStatusVerdict;
35
+ /**
36
+ * Non-fatal gaps in a manifest worth telling the operator about. A manifest is valid without
37
+ * these — the pool still runs jobs — but each one silently costs a recovery or cleanup path,
38
+ * which is invisible until an incident.
39
+ *
40
+ * Each gap carries a machine-readable `code` beside its English `message` because it reaches
41
+ * two audiences with different needs: the deployment log takes the prose, while the connection
42
+ * test hands the code to the SPA, which owns the operator-facing (translated) copy.
43
+ */
44
+ export declare function manifestWarnings(manifest: RunnerPoolManifest): ConnectionWarning[];
16
45
  //# sourceMappingURL=runners.logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runners.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/runners.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAW9F,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAe3E;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,GAAE,eAA0C,GACjD,IAAI,CAKN;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,cAAc,CAAA;CAAE,EAAE,GAAG,SAAS,GAC5D,cAAc,CAUhB"}
1
+ {"version":3,"file":"runners.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/runners/runners.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAW5B,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAe3E;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,GAAE,eAA0C,GACjD,IAAI,CAKN;AA0ED,kGAAkG;AAClG,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,cAAc,CAAA;IACrB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,cAAc,CAAA;CAAE,EAAE,GAAG,SAAS,GAC5D,sBAAsB,CAgBxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,CAoBlF"}
@@ -31,22 +31,130 @@ export function assertManifestUrlsSafe(manifest, policy = STRICT_URL_SAFETY_POLI
31
31
  }
32
32
  }
33
33
  /**
34
- * Map a scheduler's status string onto the harness job state using the manifest's
35
- * `statusMap`. Falls back to interpreting the raw value as a state literal
36
- * (`running`/`done`/`failed`) when it matches one, else `running` — so a poll
37
- * that can't be classified keeps the driver waiting rather than wrongly failing.
34
+ * Scheduler status words that mean the RUNNER went away — the pool member was reclaimed
35
+ * out from under a job that was otherwise fine. Distinct from the failure words below
36
+ * because the recovery differs: an eviction re-dispatches onto a FRESH member (the engine's
37
+ * `recoverContainerEviction` budget), while a job-level failure is the job's own verdict and
38
+ * must not be silently retried.
39
+ *
40
+ * Deliberately narrow. Only words that can mean nothing else are listed: `killed`,
41
+ * `terminated` and `cancelled` are NOT here (they routinely mean "an operator stopped this",
42
+ * and resurrecting such a job on a fresh member would be worse than the wedge this fixes),
43
+ * and neither is anything that could name a queue state.
38
44
  */
39
- export function mapJobState(raw, statusMap) {
40
- if (raw !== undefined) {
41
- if (statusMap) {
42
- const hit = statusMap.find((m) => m.from.toLowerCase() === raw.toLowerCase());
43
- if (hit)
44
- return hit.to;
45
- }
46
- const lower = raw.toLowerCase();
47
- if (lower === 'running' || lower === 'done' || lower === 'failed')
48
- return lower;
45
+ const EVICTION_STATUSES = new Set([
46
+ 'evicted',
47
+ 'eviction',
48
+ 'preempted',
49
+ 'preemption',
50
+ 'lost',
51
+ 'nodelost',
52
+ 'node_lost',
53
+ 'node-lost',
54
+ 'nodefailure',
55
+ 'node_failure',
56
+ 'oomkilled',
57
+ 'oom_killed',
58
+ 'oom-killed',
59
+ ]);
60
+ /**
61
+ * Scheduler status words that mean the job is OVER and did not succeed. Without these a
62
+ * pool whose scheduler says `error` / `cancelled` reads as `running` and the run burns its
63
+ * whole ~70-minute poll budget before failing `timeout` — a wedge with a misleading cause.
64
+ *
65
+ * Every word here must be TERMINAL in every vocabulary it could come from — a word that can
66
+ * also name a job still waiting for capacity belongs in neither this set nor
67
+ * {@link EVICTION_STATUSES}, so it falls back to `running`. `unschedulable` is the instructive
68
+ * exclusion: Kubernetes reports it as a condition on a PENDING pod while the cluster
69
+ * autoscales, so failing on it would kill a live run on its FIRST poll — the wrong-kill class
70
+ * this whole classification exists to avoid.
71
+ */
72
+ const FAILED_STATUSES = new Set([
73
+ 'failed',
74
+ 'failure',
75
+ 'error',
76
+ 'errored',
77
+ 'cancelled',
78
+ 'canceled',
79
+ 'aborted',
80
+ 'killed',
81
+ 'timeout',
82
+ 'timedout',
83
+ 'timed_out',
84
+ 'timed-out',
85
+ 'deadlineexceeded',
86
+ 'deadline_exceeded',
87
+ ]);
88
+ /** Scheduler status words that mean the job finished successfully. */
89
+ const DONE_STATUSES = new Set(['done', 'complete', 'completed', 'succeeded', 'success', 'finished']);
90
+ /**
91
+ * Fold a status word (a scheduler's, or an operator's `statusMap.from`) to its comparison form.
92
+ * Both sides go through this, so a mapping entry and the status it means match whatever
93
+ * casing/padding either arrives with — a scheduler that pads or pretty-cases its enum
94
+ * (`' Evicted '`) is describing the same state as one that doesn't. Nothing left ⇒ undefined:
95
+ * a blank status is an ABSENT one, not a word to classify.
96
+ */
97
+ function normalizeStatus(raw) {
98
+ const lower = raw?.trim().toLowerCase();
99
+ return lower ? lower : undefined;
100
+ }
101
+ /**
102
+ * Classify a scheduler's status string into the canonical job state (+ an eviction verdict).
103
+ *
104
+ * Precedence: the manifest's own `statusMap` decides the STATE — an operator saying what their
105
+ * scheduler's words mean always wins — then the built-in vocabularies above cover the words a
106
+ * manifest didn't map. A resolved `failed` is additionally checked against
107
+ * {@link EVICTION_STATUSES} on the RAW word, so a manifest mapping `evicted → failed` still
108
+ * gets eviction recovery rather than a terminal failure.
109
+ *
110
+ * An UNRECOGNISED word still falls back to `running`, keeping the driver waiting: a scheduler
111
+ * vocabulary we don't know is far more likely to be a queue state (`provisioning`, `assigning`)
112
+ * than a death, and wrongly killing a live run is the worse error of the two. Such a run is
113
+ * still bounded by the poll budget, and the manifest can always map the word explicitly.
114
+ */
115
+ export function classifyJobStatus(raw, statusMap) {
116
+ const lower = normalizeStatus(raw);
117
+ // No status reported at all (no `statusPath`, an absent field, or a blank string): nothing to
118
+ // classify, so keep the driver waiting exactly as an unrecognised word does.
119
+ if (lower === undefined)
120
+ return { state: 'running' };
121
+ const mapped = statusMap?.find((m) => normalizeStatus(m.from) === lower)?.to;
122
+ const state = mapped ??
123
+ (FAILED_STATUSES.has(lower) || EVICTION_STATUSES.has(lower)
124
+ ? 'failed'
125
+ : DONE_STATUSES.has(lower)
126
+ ? 'done'
127
+ : 'running');
128
+ return state === 'failed' && EVICTION_STATUSES.has(lower)
129
+ ? { state, evicted: 'crash' }
130
+ : { state };
131
+ }
132
+ /**
133
+ * Non-fatal gaps in a manifest worth telling the operator about. A manifest is valid without
134
+ * these — the pool still runs jobs — but each one silently costs a recovery or cleanup path,
135
+ * which is invisible until an incident.
136
+ *
137
+ * Each gap carries a machine-readable `code` beside its English `message` because it reaches
138
+ * two audiences with different needs: the deployment log takes the prose, while the connection
139
+ * test hands the code to the SPA, which owns the operator-facing (translated) copy.
140
+ */
141
+ export function manifestWarnings(manifest) {
142
+ const warnings = [];
143
+ if (!manifest.release) {
144
+ warnings.push({
145
+ code: 'runner_manifest_no_release',
146
+ message: `Manifest '${manifest.providerId}' defines no release template, so cancelling a run ` +
147
+ `cannot tell the pool to stop its job — an orphaned job keeps its runner until the ` +
148
+ `pool reclaims it on its own.`,
149
+ });
150
+ }
151
+ if (!manifest.response.statusPath) {
152
+ warnings.push({
153
+ code: 'runner_manifest_no_status_path',
154
+ message: `Manifest '${manifest.providerId}' maps no status path, so every poll reads as still ` +
155
+ `running and a job can only end by exhausting the run's poll budget.`,
156
+ });
49
157
  }
50
- return 'running';
158
+ return warnings;
51
159
  }
52
160
  //# sourceMappingURL=runners.logic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runners.logic.js","sourceRoot":"","sources":["../../../src/modules/runners/runners.logic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAEhF,4EAA4E;AAC5E,0EAA0E;AAC1E,+EAA+E;AAC/E,kFAAkF;AAClF,6EAA6E;AAC7E,kEAAkE;AAElE,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAAC,QAA4B;IAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IAC1B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,EAAE,CAAA;QACX,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,KAAK,OAAO;YACV,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACjE,KAAK,2BAA2B;YAC9B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;QACrE,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,sBAAsB,CACpC,QAA4B,EAC5B,MAAM,GAAoB,wBAAwB;IAElD,wBAAwB,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;IAC9D,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;QACvD,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAA;IAC7E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,GAAuB,EACvB,SAA6D;IAE7D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;YAC7E,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC,EAAE,CAAA;QACxB,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;QAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;IACjF,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"runners.logic.js","sourceRoot":"","sources":["../../../src/modules/runners/runners.logic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import type { BugHuntAssessor, BugHuntResult, RunBugHuntInput, TaskConnectionRepository, TaskRepository, TaskSourceKind, TaskSourceRegistry, TrackerBoard } from '@cat-factory/kernel';
2
+ import type { TaskImportService } from './TaskImportService.js';
3
+ import type { TaskFromIssue, TaskLinkService } from './TaskLinkService.js';
4
+ export interface BugHuntServiceDependencies {
5
+ taskSourceRegistry: TaskSourceRegistry;
6
+ taskConnectionRepository: TaskConnectionRepository;
7
+ taskRepository: TaskRepository;
8
+ importService: TaskImportService;
9
+ linkService: TaskLinkService;
10
+ /**
11
+ * The ranking model. Absent (or disabled) ⇒ a hunt still returns the board's candidates,
12
+ * flagged `analysisStatus: 'unavailable'` — the read is useful on its own, and silently
13
+ * presenting an unranked list as a ranking would be the one genuinely misleading outcome.
14
+ */
15
+ assessor?: BugHuntAssessor;
16
+ /**
17
+ * The workspace spend safeguard, as the narrow predicate the ranking needs (so this layer
18
+ * takes no dependency on `@cat-factory/spend`).
19
+ *
20
+ * A hunt is the platform's first BILLABLE model call that is not behind a run start, so the
21
+ * budget check `RunAdmission` performs for a run has no equivalent here unless it is made
22
+ * one: without it, a workspace that has exhausted its budget — and can therefore no longer
23
+ * start the very run a hunt exists to start — could still spend on ranking, repeatedly.
24
+ * Unwired ⇒ no guard, exactly as an unwired spend service means no guard on a run.
25
+ */
26
+ isOverBudget?: (workspaceId: string) => Promise<boolean>;
27
+ }
28
+ /**
29
+ * How many candidates one hunt scans. Bounded because the whole set goes into a single
30
+ * ranking prompt: past this the prompt cost grows without making the shortlist better, since
31
+ * a human is only ever going to look at the top handful. A board with more matching bugs
32
+ * reports `truncated`, so the UI can say the scan was partial rather than implying the board
33
+ * was exhausted.
34
+ */
35
+ export declare const BUG_HUNT_SCAN_LIMIT = 40;
36
+ export declare class BugHuntService {
37
+ private readonly deps;
38
+ constructor(deps: BugHuntServiceDependencies);
39
+ /**
40
+ * List the boards a hunt can run against. A source whose provider can't enumerate boards
41
+ * throws rather than returning `[]`: an empty picker and "this tracker cannot list boards"
42
+ * look identical to a user, and only the second one tells them to type the board in.
43
+ */
44
+ listBoards(workspaceId: string, source: TaskSourceKind): Promise<TrackerBoard[]>;
45
+ /**
46
+ * Run a hunt: read the board's open, unassigned bugs (excluding anything already linked to a
47
+ * block), rank them, and return them best-first.
48
+ *
49
+ * The READ throws — an unreachable tracker is a failure the user must see, not an empty
50
+ * board. The RANKING never does: an assessment that fails leaves the real candidates in
51
+ * place under `analysisStatus: 'failed'`, because the list is independently useful and a
52
+ * model outage should not cost the user the scan.
53
+ */
54
+ hunt(workspaceId: string, source: TaskSourceKind, input: RunBugHuntInput): Promise<BugHuntResult>;
55
+ /**
56
+ * Adopt a confirmed candidate: import the issue into the projection and materialise it as a
57
+ * `bug` task inside `containerId`, with the issue linked for agent context.
58
+ *
59
+ * Stops there deliberately. Starting the run needs the execution engine (and the initiator's
60
+ * personal-credential gate), which is the HTTP layer's job — this service stays inside the
61
+ * integrations layer, exactly as `BugIntakeService` hands its pickup back to the engine.
62
+ */
63
+ adopt(workspaceId: string, source: TaskSourceKind, externalId: string, containerId: string, createdBy: string | null, pipelineId: string): Promise<TaskFromIssue>;
64
+ /**
65
+ * Rank a candidate set, degrading to the unranked list with a stated reason. The model's
66
+ * verdicts are joined onto the provider's rows by `rankBugCandidates`, so a hallucinated
67
+ * issue is dropped and a skipped one surfaces as "not assessed" rather than as a zero.
68
+ */
69
+ private rank;
70
+ /** Resolve a source's stored credentials, or an empty bag for a credentialless one (GitHub). */
71
+ private credentialsFor;
72
+ }
73
+ //# sourceMappingURL=BugHuntService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BugHuntService.d.ts","sourceRoot":"","sources":["../../../src/modules/tasks/BugHuntService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,eAAe,EAEf,aAAa,EAEb,eAAe,EACf,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,YAAY,EACb,MAAM,qBAAqB,CAAA;AAO5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAkB1E,MAAM,WAAW,0BAA0B;IACzC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,wBAAwB,EAAE,wBAAwB,CAAA;IAClD,cAAc,EAAE,cAAc,CAAA;IAC9B,aAAa,EAAE,iBAAiB,CAAA;IAChC,WAAW,EAAE,eAAe,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACzD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAKrC,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,0BAA0B,EAAI;IAEjE;;;;OAIG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAarF;IAED;;;;;;;;OAQG;IACG,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,aAAa,CAAC,CA0CxB;IAED;;;;;;;OAOG;IACG,KAAK,CACT,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAaxB;IAED;;;;OAIG;YACW,IAAI;IAgDlB,gGAAgG;YAClF,cAAc;CAO7B"}