@oisincoveney/pipeline 3.19.5 → 3.20.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 (79) hide show
  1. package/dist/argo-submit.d.ts +2 -0
  2. package/dist/argo-submit.js +3 -0
  3. package/dist/cli/doctor.d.ts +1 -1
  4. package/dist/cli/doctor.js +2 -2
  5. package/dist/cli/format.js +1 -1
  6. package/dist/cli/program.d.ts +1 -1
  7. package/dist/cli/run-command.d.ts +1 -1
  8. package/dist/cli/run-resolver.d.ts +1 -1
  9. package/dist/cli/run-service.d.ts +1 -1
  10. package/dist/cli/submit-options.js +10 -2
  11. package/dist/commands/pipeline-command.js +1 -1
  12. package/dist/commands/ticket/shared.d.ts +1 -1
  13. package/dist/commands/ticket-command.d.ts +2 -1
  14. package/dist/config/schemas.d.ts +1 -1
  15. package/dist/context/repo-map.js +2 -2
  16. package/dist/credentials/broker.d.ts +1 -1
  17. package/dist/install-commands/opencode.js +1 -1
  18. package/dist/install-commands/planner.js +1 -1
  19. package/dist/install-hooks.js +1 -1
  20. package/dist/loop/argo-poll.js +2 -2
  21. package/dist/loop/loop-command.js +1 -1
  22. package/dist/loop/merge.js +1 -1
  23. package/dist/moka-global-config.d.ts +1 -0
  24. package/dist/moka-global-config.js +1 -0
  25. package/dist/moka-submit.d.ts +5 -0
  26. package/dist/moka-submit.js +1 -0
  27. package/dist/planning/generate.js +1 -1
  28. package/dist/remote/argo/model.d.ts +2 -0
  29. package/dist/remote/argo/model.js +1 -0
  30. package/dist/remote/argo/storage.js +27 -6
  31. package/dist/remote/submit/argo-submission.d.ts +1 -0
  32. package/dist/remote/submit/argo-submission.js +1 -0
  33. package/dist/remote/submit/io.js +2 -2
  34. package/dist/run-control/contracts.d.ts +1 -1
  35. package/dist/run-control/contracts.js +1 -1
  36. package/dist/run-control/detach.js +1 -1
  37. package/dist/run-control/next-node.js +1 -1
  38. package/dist/run-control/run-artifacts-command.js +1 -1
  39. package/dist/run-control/run-command-domain.js +2 -2
  40. package/dist/run-control/runtime-reporter.js +1 -1
  41. package/dist/run-control/store-paths.js +1 -1
  42. package/dist/run-control/submit-result.js +1 -1
  43. package/dist/run-control/supervisor.js +2 -2
  44. package/dist/run-state/git-refs.js +1 -1
  45. package/dist/runner-command/run.js +1 -1
  46. package/dist/runtime/actor-ids.d.ts +1 -1
  47. package/dist/runtime/agent-node/index.js +2 -2
  48. package/dist/runtime/builtins/index.js +2 -2
  49. package/dist/runtime/changed-files/changed-files.js +1 -1
  50. package/dist/runtime/changed-files/index.js +2 -2
  51. package/dist/runtime/command-executor/index.js +2 -2
  52. package/dist/runtime/context/index.js +2 -2
  53. package/dist/runtime/contracts/index.d.ts +2 -1
  54. package/dist/runtime/drain-merge/index.js +2 -2
  55. package/dist/runtime/events/events.js +2 -2
  56. package/dist/runtime/events/index.js +2 -2
  57. package/dist/runtime/gates/index.js +5 -5
  58. package/dist/runtime/gates/kinds/acceptance/acceptance.js +1 -1
  59. package/dist/runtime/hooks/command-hook.js +1 -1
  60. package/dist/runtime/hooks/index.js +2 -2
  61. package/dist/runtime/json-validation/index.js +2 -2
  62. package/dist/runtime/node-protocol/node-protocol.js +1 -1
  63. package/dist/runtime/node-state-store.js +1 -1
  64. package/dist/runtime/open-pull-request/index.js +2 -2
  65. package/dist/runtime/opencode-session-executor.js +1 -1
  66. package/dist/runtime/parallel-node/index.js +2 -2
  67. package/dist/runtime/retry.js +1 -1
  68. package/dist/runtime/scheduler.js +1 -1
  69. package/dist/runtime/services/backlog-service.d.ts +1 -1
  70. package/dist/runtime/services/backlog-service.js +1 -1
  71. package/dist/runtime/services/drain-merge-git-service.js +2 -2
  72. package/dist/runtime/services/kubernetes-argo-service.js +1 -1
  73. package/dist/runtime/services/run-journal-file-service.js +1 -1
  74. package/dist/tickets/backlog-task-store.js +1 -1
  75. package/dist/tickets/completion/complete-ticket.js +1 -1
  76. package/dist/tickets/ticket-graph.js +2 -2
  77. package/dist/tickets/ticket-plan.d.ts +1 -1
  78. package/docs/operator-guide.md +7 -0
  79. package/package.json +7 -1
@@ -34,6 +34,7 @@ declare const submitRunnerArgoWorkflowOptionsSchema: z.ZodObject<{
34
34
  }, z.core.$strict>>;
35
35
  name: z.ZodOptional<z.ZodString>;
36
36
  namespace: z.ZodString;
37
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
37
38
  payloadJson: z.ZodString;
38
39
  serviceAccountName: z.ZodOptional<z.ZodString>;
39
40
  scheduleYaml: z.ZodString;
@@ -68,6 +69,7 @@ declare const submitDynamicRunnerArgoWorkflowOptionsSchema: z.ZodObject<{
68
69
  }, z.core.$strict>>;
69
70
  name: z.ZodOptional<z.ZodString>;
70
71
  namespace: z.ZodString;
72
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
71
73
  payloadJson: z.ZodString;
72
74
  serviceAccountName: z.ZodOptional<z.ZodString>;
73
75
  workflowId: z.ZodString;
@@ -48,6 +48,7 @@ const submitRunnerArgoWorkflowBaseOptionShape = {
48
48
  mcpGatewayAuth: mcpGatewayAuthOptionSchema.optional(),
49
49
  name: z.string().min(1).optional(),
50
50
  namespace: z.string().min(1),
51
+ npmRegistryAuthSecretName: z.string().min(1).optional(),
51
52
  payloadJson: z.string().min(1),
52
53
  serviceAccountName: z.string().min(1).optional()
53
54
  };
@@ -113,6 +114,7 @@ function submitRunnerArgoWorkflowEffect(rawOptions, dependencies) {
113
114
  labels,
114
115
  name: options.name,
115
116
  namespace: options.namespace,
117
+ npmRegistryAuthSecretName: options.npmRegistryAuthSecretName,
116
118
  payloadConfigMapName,
117
119
  plan: compiled.plan,
118
120
  scheduleConfigMapName: scheduleArtifactConfigMapName,
@@ -215,6 +217,7 @@ function submitDynamicRunnerArgoWorkflowEffect(rawOptions, dependencies) {
215
217
  labels,
216
218
  name: options.name,
217
219
  namespace: options.namespace,
220
+ npmRegistryAuthSecretName: options.npmRegistryAuthSecretName,
218
221
  payloadConfigMapName,
219
222
  serviceAccountName: options.serviceAccountName,
220
223
  workflowId: options.workflowId
@@ -18,4 +18,4 @@ interface DoctorFlags {
18
18
  }
19
19
  declare function runDoctor(cwd: string, options?: DoctorFlags): Promise<DoctorResult>;
20
20
  //#endregion
21
- export { runDoctor };
21
+ export { DoctorCheck, DoctorFlags, DoctorResult, runDoctor };
@@ -9,8 +9,8 @@ import { execa } from "execa";
9
9
  import { join } from "node:path";
10
10
  import matter from "gray-matter";
11
11
  //#region src/cli/doctor.ts
12
- const HEADLESS_AGENT_PERMISSION_VALUES = new Set(["ask"]);
13
- const RUN_READINESS_CATEGORIES = new Set([
12
+ const HEADLESS_AGENT_PERMISSION_VALUES = /* @__PURE__ */ new Set(["ask"]);
13
+ const RUN_READINESS_CATEGORIES = /* @__PURE__ */ new Set([
14
14
  "acceptance",
15
15
  "green",
16
16
  "intake",
@@ -137,4 +137,4 @@ function truncateMiddle(text, maxLength) {
137
137
  return `${text.slice(0, keep)}\n... truncated ...\n${text.slice(-keep)}`;
138
138
  }
139
139
  //#endregion
140
- export { createTerminalRuntimeReporter, formatDoctorResult, formatRuntimeFailure, formatRuntimeResult };
140
+ export { createTerminalRuntimeReporter, formatDoctorResult, formatRuntimeFailure, formatRuntimeProgressMessage, formatRuntimeResult };
@@ -11,4 +11,4 @@ interface CliProgramOptions {
11
11
  declare function createCliProgram(options?: CliProgramOptions): Command;
12
12
  declare function runCli(argv: string[]): Promise<void>;
13
13
  //#endregion
14
- export { createCliProgram, runCli };
14
+ export { CliProgramOptions, createCliProgram, runCli };
@@ -10,4 +10,4 @@ interface RunCommandCall {
10
10
  }
11
11
  type RunCommand = (call: RunCommandCall) => Promise<void> | void;
12
12
  //#endregion
13
- export { RunCommand };
13
+ export { RunCommand, RunCommandCall };
@@ -33,4 +33,4 @@ interface RunResolution {
33
33
  target: MokaRunTarget;
34
34
  }
35
35
  //#endregion
36
- export { RunResolution, RunResolverFlags };
36
+ export { LocalRuntimeExecution, MOKA_RUN_EFFORTS, MOKA_RUN_TARGETS, MokaRunEffort, MokaRunMode, MokaRunTarget, RemoteSubmitExecution, RunResolution, RunResolverFlags };
@@ -26,4 +26,4 @@ interface RunControlOptions {
26
26
  declare function execute(description: string, options?: ExecuteOptions): Promise<void>;
27
27
  declare function quick(description: string, options?: Omit<ExecuteOptions, "entrypoint">): Promise<void>;
28
28
  //#endregion
29
- export { execute, quick };
29
+ export { ExecuteOptions, RunControlOptions, RunStoreMode, execute, quick };
@@ -12,8 +12,12 @@ function resolveOptionalSecretRef(flags, fromGlobalConfig) {
12
12
  };
13
13
  return fromGlobalConfig;
14
14
  }
15
+ function resolveOptionalSecretName(flags, fromGlobalConfig) {
16
+ if (flags.skip) return;
17
+ return flags.secretName ?? fromGlobalConfig;
18
+ }
15
19
  function addMokaSubmitOptions(command) {
16
- return addRunnerArgoOptions(command.option("--quick", "submit the compact graph").option("--command", "treat input after -- as explicit argv").option("--schedule <path>", "approved schedule YAML to submit").option("--event-url <url>", "runner event sink URL").option("--open-pr", "append an open-pull-request delivery node (preview-labelled PR)").option("--task <text>", "task description for command-mode metadata").option("--db-auth-secret-name <name>", "override momokaya.submit.dbAuth secret name").option("--db-auth-secret-key <key>", "override momokaya.submit.dbAuth secret key").option("--skip-db-auth", "omit MOKA_DB_URL injection regardless of global config").option("--mcp-gateway-auth-secret-name <name>", "override momokaya.submit.mcpGatewayAuth secret name").option("--mcp-gateway-auth-secret-key <key>", "override momokaya.submit.mcpGatewayAuth secret key").option("--skip-mcp-gateway-auth", "omit PIPELINE_MCP_GATEWAY_AUTHORIZATION injection regardless of global config"), { kubeconfig: true });
20
+ return addRunnerArgoOptions(command.option("--quick", "submit the compact graph").option("--command", "treat input after -- as explicit argv").option("--schedule <path>", "approved schedule YAML to submit").option("--event-url <url>", "runner event sink URL").option("--open-pr", "append an open-pull-request delivery node (preview-labelled PR)").option("--task <text>", "task description for command-mode metadata").option("--db-auth-secret-name <name>", "override momokaya.submit.dbAuth secret name").option("--db-auth-secret-key <key>", "override momokaya.submit.dbAuth secret key").option("--skip-db-auth", "omit MOKA_DB_URL injection regardless of global config").option("--mcp-gateway-auth-secret-name <name>", "override momokaya.submit.mcpGatewayAuth secret name").option("--mcp-gateway-auth-secret-key <key>", "override momokaya.submit.mcpGatewayAuth secret key").option("--skip-mcp-gateway-auth", "omit PIPELINE_MCP_GATEWAY_AUTHORIZATION injection regardless of global config").option("--npm-registry-auth-secret-name <name>", "override momokaya.submit.npmRegistryAuthSecretName").option("--skip-npm-registry-auth", "omit the /root/.npmrc mount regardless of global config"), { kubeconfig: true });
17
21
  }
18
22
  function runMokaSubmitFromCli(input, flags) {
19
23
  const cwd = process.env.PIPELINE_TARGET_PATH ?? process.cwd();
@@ -68,6 +72,10 @@ function mokaCommonSubmitOptions(input) {
68
72
  kubeconfigPath: input.flags.kubeconfig ?? momokaya?.kubernetes.kubeconfig,
69
73
  name: input.flags.name,
70
74
  namespace: input.flags.namespace ?? momokaya?.kubernetes.namespace,
75
+ npmRegistryAuthSecretName: resolveOptionalSecretName({
76
+ secretName: input.flags.npmRegistryAuthSecretName,
77
+ skip: input.flags.skipNpmRegistryAuth
78
+ }, momokaya?.submit.npmRegistryAuthSecretName),
71
79
  serviceAccountName: input.flags.serviceAccount ?? momokaya?.submit.serviceAccountName,
72
80
  worktreePath: input.cwd
73
81
  };
@@ -112,4 +120,4 @@ function parseImagePullPolicy(value) {
112
120
  return "Always";
113
121
  }
114
122
  //#endregion
115
- export { addMokaSubmitOptions, buildMokaSubmitInputFromCli, runMokaSubmitFromCli };
123
+ export { addMokaSubmitOptions, buildMokaSubmitInputFromCli, parseImagePullPolicy, runMokaSubmitFromCli };
@@ -1,6 +1,6 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
2
  //#region src/commands/pipeline-command.ts
3
- const BUILTIN_PIPE_COMMANDS = new Set([
3
+ const BUILTIN_PIPE_COMMANDS = /* @__PURE__ */ new Set([
4
4
  "run",
5
5
  "validate",
6
6
  "explain-plan",
@@ -11,4 +11,4 @@ interface TicketCommandOptions {
11
11
  readonly ticketPlanExecutor?: TicketPlanExecutor;
12
12
  }
13
13
  //#endregion
14
- export { TicketCommandOptions };
14
+ export { TicketCommandOptions, TicketPlanExecutor };
@@ -1,2 +1,3 @@
1
1
  import { TicketCommandOptions } from "./ticket/shared.js";
2
- import { Command } from "commander";
2
+ import { Command } from "commander";
3
+ export type { TicketCommandOptions };
@@ -583,4 +583,4 @@ interface PipelineConfigValidationOptions {
583
583
  allowMissingLintFileReferences?: boolean;
584
584
  }
585
585
  //#endregion
586
- export { GateKind, HookEvent, McpGatewayBackendLocality, McpGatewayWorkspacePathSource, PipelineConfig, PipelineConfigError, PipelineConfigErrorCode, PipelineConfigIssue, PipelineConfigParts, PipelineConfigValidationOptions, RunnerType, ScheduleBaseline, SchedulingRole, WorkflowNodeKind, workflowSchema };
586
+ export { GateKind, HookEvent, McpGatewayBackendLocality, McpGatewayWorkspacePathSource, PipelineConfig, PipelineConfigError, PipelineConfigErrorCode, PipelineConfigIssue, PipelineConfigParts, PipelineConfigValidationOptions, RunnerType, ScheduleBaseline, SchedulingRole, WorkflowNodeKind, configSchema, workflowSchema };
@@ -7,7 +7,7 @@ import { Query } from "web-tree-sitter";
7
7
  import Graph from "graphology";
8
8
  import pagerank from "graphology-metrics/centrality/pagerank.js";
9
9
  //#region src/context/repo-map.ts
10
- const SOURCE_EXTENSIONS = new Set([
10
+ const SOURCE_EXTENSIONS = /* @__PURE__ */ new Set([
11
11
  ".cjs",
12
12
  ".js",
13
13
  ".jsx",
@@ -15,7 +15,7 @@ const SOURCE_EXTENSIONS = new Set([
15
15
  ".ts",
16
16
  ".tsx"
17
17
  ]);
18
- const SKIP_DIRS = new Set([
18
+ const SKIP_DIRS = /* @__PURE__ */ new Set([
19
19
  "node_modules",
20
20
  ".git",
21
21
  "dist",
@@ -12,4 +12,4 @@ declare const brokerAuthOptionSchema: z.ZodObject<{
12
12
  }, z.core.$strict>;
13
13
  type BrokerAuthOption = z.input<typeof brokerAuthOptionSchema>;
14
14
  //#endregion
15
- export { BrokerAuthOption };
15
+ export { BrokerAuthOption, brokerAuthOptionSchema };
@@ -413,4 +413,4 @@ const opencodeAdapter = {
413
413
  }
414
414
  };
415
415
  //#endregion
416
- export { agentDispatchRoutes, entrypointDispatchBlock, grants, header, markdown, opencodeAdapter, projectAgentsMdDefinition, resolvedHostModel };
416
+ export { agentDispatchRoutes, entrypointDispatchBlock, grants, header, markdown, opencodeAdapter, projectAgentsMdDefinition, resolvedHostModel, shouldEmbedProjectGateway };
@@ -15,7 +15,7 @@ const ADAPTERS = {
15
15
  opencode: opencodeAdapter,
16
16
  "claude-code": claudeCodeAdapter
17
17
  };
18
- const GLOBAL_EXCLUDED_PATHS = new Set(["AGENTS.md"]);
18
+ const GLOBAL_EXCLUDED_PATHS = /* @__PURE__ */ new Set(["AGENTS.md"]);
19
19
  const GENERATED_CONTENT_MARKERS = [
20
20
  GENERATED_MARKER,
21
21
  GENERATED_TS_MARKER,
@@ -20,7 +20,7 @@ const HOST_TARGET_ROOT = {
20
20
  codex: ".codex",
21
21
  opencode: ".opencode"
22
22
  };
23
- const NON_HOOK_OWNED_TARGETS = new Set([".opencode/opencode.json"]);
23
+ const NON_HOOK_OWNED_TARGETS = /* @__PURE__ */ new Set([".opencode/opencode.json"]);
24
24
  function hashContent(content) {
25
25
  return createHash("sha256").update(content).digest("hex");
26
26
  }
@@ -2,12 +2,12 @@ import { isRecord } from "../safe-json.js";
2
2
  import { Duration, Effect } from "effect";
3
3
  import { CustomObjectsApi, KubeConfig } from "@kubernetes/client-node";
4
4
  //#region src/loop/argo-poll.ts
5
- const TERMINAL_PHASES = new Set([
5
+ const TERMINAL_PHASES = /* @__PURE__ */ new Set([
6
6
  "Succeeded",
7
7
  "Failed",
8
8
  "Error"
9
9
  ]);
10
- const KNOWN_RUNNING_PHASES = new Set([
10
+ const KNOWN_RUNNING_PHASES = /* @__PURE__ */ new Set([
11
11
  "Running",
12
12
  "Pending",
13
13
  ""
@@ -88,4 +88,4 @@ function loopControllerSubmitInput(input) {
88
88
  };
89
89
  }
90
90
  //#endregion
91
- export { parseLoopFlags, runLoopSubmit };
91
+ export { loopControllerArgv, parseLoopFlags, runLoopSubmit };
@@ -117,4 +117,4 @@ function mergeForClassification(input) {
117
117
  return adminMerge(input.pr, token, input.gh);
118
118
  }
119
119
  //#endregion
120
- export { mergeForClassification };
120
+ export { adminMerge, enableAutoMerge, mergeForClassification, secretToken, selectMergeAction };
@@ -33,6 +33,7 @@ declare const mokaGlobalConfigSchema: z.ZodObject<{
33
33
  gitCredentialsSecretName: z.ZodString;
34
34
  githubAuthSecretName: z.ZodString;
35
35
  imagePullSecretName: z.ZodString;
36
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
36
37
  serviceAccountName: z.ZodString;
37
38
  }, z.core.$strict>;
38
39
  }, z.core.$strict>;
@@ -26,6 +26,7 @@ const mokaSubmitGlobalConfigSchema = z.object({
26
26
  gitCredentialsSecretName: z.string().min(1),
27
27
  githubAuthSecretName: z.string().min(1),
28
28
  imagePullSecretName: z.string().min(1),
29
+ npmRegistryAuthSecretName: z.string().min(1).optional(),
29
30
  serviceAccountName: z.string().min(1)
30
31
  }).strict();
31
32
  const mokaKubernetesGlobalConfigSchema = z.object({
@@ -201,6 +201,7 @@ declare const mokaSubmitBaseOptionsSchema: z.ZodObject<{
201
201
  kubeconfigPath: z.ZodOptional<z.ZodString>;
202
202
  name: z.ZodOptional<z.ZodString>;
203
203
  namespace: z.ZodOptional<z.ZodString>;
204
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
204
205
  repository: z.ZodOptional<z.ZodObject<{
205
206
  baseBranch: z.ZodString;
206
207
  headBranch: z.ZodOptional<z.ZodString>;
@@ -315,6 +316,7 @@ declare const mokaGraphSubmitOptionsSchema: z.ZodObject<{
315
316
  kubeconfigPath: z.ZodOptional<z.ZodString>;
316
317
  name: z.ZodOptional<z.ZodString>;
317
318
  namespace: z.ZodOptional<z.ZodString>;
319
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
318
320
  repository: z.ZodOptional<z.ZodObject<{
319
321
  baseBranch: z.ZodString;
320
322
  headBranch: z.ZodOptional<z.ZodString>;
@@ -446,6 +448,7 @@ declare const mokaCommandSubmitOptionsSchema: z.ZodObject<{
446
448
  kubeconfigPath: z.ZodOptional<z.ZodString>;
447
449
  name: z.ZodOptional<z.ZodString>;
448
450
  namespace: z.ZodOptional<z.ZodString>;
451
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
449
452
  repository: z.ZodOptional<z.ZodObject<{
450
453
  baseBranch: z.ZodString;
451
454
  headBranch: z.ZodOptional<z.ZodString>;
@@ -572,6 +575,7 @@ declare const mokaSubmitOptionsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
572
575
  kubeconfigPath: z.ZodOptional<z.ZodString>;
573
576
  name: z.ZodOptional<z.ZodString>;
574
577
  namespace: z.ZodOptional<z.ZodString>;
578
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
575
579
  repository: z.ZodOptional<z.ZodObject<{
576
580
  baseBranch: z.ZodString;
577
581
  headBranch: z.ZodOptional<z.ZodString>;
@@ -702,6 +706,7 @@ declare const mokaSubmitOptionsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
702
706
  kubeconfigPath: z.ZodOptional<z.ZodString>;
703
707
  name: z.ZodOptional<z.ZodString>;
704
708
  namespace: z.ZodOptional<z.ZodString>;
709
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
705
710
  repository: z.ZodOptional<z.ZodObject<{
706
711
  baseBranch: z.ZodString;
707
712
  headBranch: z.ZodOptional<z.ZodString>;
@@ -70,6 +70,7 @@ const mokaSubmitBaseOptionsSchema = z.object({
70
70
  kubeconfigPath: z.string().min(1).optional(),
71
71
  name: z.string().min(1).optional(),
72
72
  namespace: z.string().min(1).optional(),
73
+ npmRegistryAuthSecretName: z.string().min(1).optional(),
73
74
  repository: runnerRepositoryContextSchema.optional(),
74
75
  run: runnerRunIdentitySchema.optional(),
75
76
  serviceAccountName: z.string().min(1).optional()
@@ -41,7 +41,7 @@ const SCHEDULE_BUILTINS = [
41
41
  "test",
42
42
  "typecheck"
43
43
  ];
44
- const PARALLEL_MERGE_BUILTINS = new Set(["drain-merge"]);
44
+ const PARALLEL_MERGE_BUILTINS = /* @__PURE__ */ new Set(["drain-merge"]);
45
45
  const scheduleArtifactSchema = z.object({
46
46
  generated_at: z.string().datetime(),
47
47
  kind: z.literal(SCHEDULE_KIND),
@@ -32,6 +32,7 @@ declare const buildRunnerArgoWorkflowOptionsSchema: z.ZodObject<{
32
32
  }, z.core.$strict>>;
33
33
  name: z.ZodOptional<z.ZodString>;
34
34
  namespace: z.ZodString;
35
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
35
36
  payloadConfigMapKey: z.ZodDefault<z.ZodString>;
36
37
  payloadConfigMapName: z.ZodString;
37
38
  resources: z.ZodOptional<z.ZodObject<{
@@ -79,6 +80,7 @@ declare const buildDynamicRunnerArgoWorkflowOptionsSchema: z.ZodObject<{
79
80
  }, z.core.$strict>>;
80
81
  name: z.ZodOptional<z.ZodString>;
81
82
  namespace: z.ZodString;
83
+ npmRegistryAuthSecretName: z.ZodOptional<z.ZodString>;
82
84
  payloadConfigMapKey: z.ZodDefault<z.ZodString>;
83
85
  payloadConfigMapName: z.ZodString;
84
86
  resources: z.ZodOptional<z.ZodObject<{
@@ -198,6 +198,7 @@ const runnerArgoWorkflowBaseOptionsSchema = z.object({
198
198
  mcpGatewayAuth: mcpGatewayAuthOptionSchema.optional(),
199
199
  name: z.string().min(1).optional(),
200
200
  namespace: kubernetesNameSchema,
201
+ npmRegistryAuthSecretName: kubernetesNameSchema.optional(),
201
202
  payloadConfigMapKey: z.string().min(1).default("payload.json"),
202
203
  payloadConfigMapName: kubernetesNameSchema,
203
204
  resources: argoWorkflowResourceRequirementsSchema.optional(),
@@ -32,9 +32,7 @@ function runnerWorkflowStorage(options, tasks) {
32
32
  readOnly: true,
33
33
  subPath: "schedule.yaml"
34
34
  }];
35
- appendEventAuthStorage(options, volumes, volumeMounts);
36
- appendGitCredentialsStorage(options, volumes, volumeMounts);
37
- appendGithubAuthStorage(options, volumes, volumeMounts);
35
+ appendSharedSecretStorage(options, volumes, volumeMounts);
38
36
  return {
39
37
  volumeMounts: z.array(argoWorkflowVolumeMountSchema).parse(volumeMounts),
40
38
  volumes: z.array(argoWorkflowVolumeSchema).parse(volumes)
@@ -43,14 +41,18 @@ function runnerWorkflowStorage(options, tasks) {
43
41
  function dynamicRunnerWorkflowStorage(options) {
44
42
  const volumes = [runnerPayloadVolume(options)];
45
43
  const volumeMounts = [runnerPayloadVolumeMount()];
46
- appendEventAuthStorage(options, volumes, volumeMounts);
47
- appendGitCredentialsStorage(options, volumes, volumeMounts);
48
- appendGithubAuthStorage(options, volumes, volumeMounts);
44
+ appendSharedSecretStorage(options, volumes, volumeMounts);
49
45
  return {
50
46
  volumeMounts: z.array(argoWorkflowVolumeMountSchema).parse(volumeMounts),
51
47
  volumes: z.array(argoWorkflowVolumeSchema).parse(volumes)
52
48
  };
53
49
  }
50
+ function appendSharedSecretStorage(options, volumes, volumeMounts) {
51
+ appendEventAuthStorage(options, volumes, volumeMounts);
52
+ appendGitCredentialsStorage(options, volumes, volumeMounts);
53
+ appendGithubAuthStorage(options, volumes, volumeMounts);
54
+ appendNpmRegistryAuthStorage(options, volumes, volumeMounts);
55
+ }
54
56
  function runnerPayloadVolume(options) {
55
57
  return {
56
58
  configMap: {
@@ -123,5 +125,24 @@ function appendGithubAuthStorage(options, volumes, volumeMounts) {
123
125
  subPath: "hosts.yml"
124
126
  });
125
127
  }
128
+ function appendNpmRegistryAuthStorage(options, volumes, volumeMounts) {
129
+ if (!options.npmRegistryAuthSecretName) return;
130
+ volumes.push({
131
+ name: "npm-registry-auth",
132
+ secret: {
133
+ items: [{
134
+ key: "npmrc",
135
+ path: "npmrc"
136
+ }],
137
+ secretName: options.npmRegistryAuthSecretName
138
+ }
139
+ });
140
+ volumeMounts.push({
141
+ mountPath: "/root/.npmrc",
142
+ name: "npm-registry-auth",
143
+ readOnly: true,
144
+ subPath: "npmrc"
145
+ });
146
+ }
126
147
  //#endregion
127
148
  export { dynamicRunnerWorkflowStorage, runnerWorkflowStorage };
@@ -26,6 +26,7 @@ interface MokaWorkflowSubmitOptions {
26
26
  };
27
27
  name?: string;
28
28
  namespace: string;
29
+ npmRegistryAuthSecretName?: string;
29
30
  payloadJson: string;
30
31
  scheduleYaml?: string;
31
32
  serviceAccountName?: string;
@@ -54,6 +54,7 @@ function workflowSubmitOptions(options) {
54
54
  kubeconfigPath: options.kubeconfigPath,
55
55
  name: options.name,
56
56
  namespace: requireSubmitOption(options.namespace, "namespace"),
57
+ npmRegistryAuthSecretName: options.npmRegistryAuthSecretName,
57
58
  serviceAccountName: options.serviceAccountName
58
59
  };
59
60
  }
@@ -1,6 +1,6 @@
1
1
  import { normalizeRunnerRepositoryForSubmit } from "../../git-remote-url.js";
2
2
  import { readFileSync } from "node:fs";
3
- import { simpleGit } from "simple-git";
3
+ import { simpleGit as simpleGit$1 } from "simple-git";
4
4
  import parseGitUrl from "git-url-parse";
5
5
  //#region src/remote/submit/io.ts
6
6
  function readScheduleFile(dependencies, path) {
@@ -47,7 +47,7 @@ function runContext(options, git, runId) {
47
47
  }
48
48
  async function resolveGit(worktreePath, dependencies) {
49
49
  if (dependencies.resolveGitContext) return dependencies.resolveGitContext(worktreePath);
50
- const git = simpleGit({ baseDir: worktreePath });
50
+ const git = simpleGit$1({ baseDir: worktreePath });
51
51
  const [branchResult, sha, remoteConfig] = await Promise.all([
52
52
  git.branch(),
53
53
  git.revparse(["HEAD"]),
@@ -103,4 +103,4 @@ type RunEffort = z.infer<typeof runEffortSchema>;
103
103
  type RunMode = z.infer<typeof runModeSchema>;
104
104
  type MokaRunManifest = z.infer<typeof mokaRunManifestSchema>;
105
105
  //#endregion
106
- export { MokaRunManifest, RunEffort, RunMode, RunTarget };
106
+ export { MokaRunManifest, RunEffort, RunMode, RunTarget, mokaRunManifestSchema, runEffortSchema, runModeSchema, runTargetSchema };
@@ -127,4 +127,4 @@ function parseMokaRunManifest(input) {
127
127
  return mokaRunManifestSchema.parse(input);
128
128
  }
129
129
  //#endregion
130
- export { DEFAULT_RUN_CONTROL_HEARTBEAT_INTERVAL_MS, DEFAULT_RUN_CONTROL_NODE_STALE_AFTER_MS, DEFAULT_RUN_CONTROL_STALE_DETECTION, mokaNodeStatusSchema, mokaRunStatusSchema, parseMokaNodeStatus, parseMokaRunController, parseMokaRunEvent, parseMokaRunManifest, parseMokaRunStatus, parseRunControlStaleDetection, parseRunEffort, parseRunMode, parseRunTarget };
130
+ export { DEFAULT_RUN_CONTROL_HEARTBEAT_INTERVAL_MS, DEFAULT_RUN_CONTROL_NODE_STALE_AFTER_MS, DEFAULT_RUN_CONTROL_STALE_DETECTION, MOKA_NODE_STATUSES, MOKA_RUN_STATUSES, RUN_EFFORTS, RUN_MODES, RUN_TARGETS, mokaNodeStatusEventSchema, mokaNodeStatusSchema, mokaRunControlEventSchema, mokaRunControllerSchema, mokaRunEventSchema, mokaRunHeartbeatEventSchema, mokaRunManifestSchema, mokaRunStatusEventSchema, mokaRunStatusSchema, parseMokaNodeStatus, parseMokaRunController, parseMokaRunEvent, parseMokaRunManifest, parseMokaRunStatus, parseRunControlStaleDetection, parseRunEffort, parseRunMode, parseRunTarget, runControlStaleDetectionSchema, runEffortSchema, runModeSchema, runTargetSchema };
@@ -76,4 +76,4 @@ function waitForControllerSpawnEffect(child) {
76
76
  });
77
77
  }
78
78
  //#endregion
79
- export { startDetachedRunController };
79
+ export { startDetachedRunController, startDetachedRunControllerEffect };
@@ -115,4 +115,4 @@ function printNextNodeEnvelopeScoped(runId) {
115
115
  });
116
116
  }
117
117
  //#endregion
118
- export { readPersistedScheduleEffect, readyNodeIdsFromRunStore, registerNextNodeSubcommand };
118
+ export { buildNextNodeEnvelope, buildNextNodeEnvelopeFromRunStore, readPersistedScheduleEffect, readyNodeIdsFromRunStore, registerNextNodeSubcommand };
@@ -14,7 +14,7 @@ const WATCH_INTERVAL_MS = 1e3;
14
14
  const SENSITIVE_BASENAME_PARTS = ["prompt", "session"];
15
15
  const SENSITIVE_BASENAME_PREFIXES = ["body."];
16
16
  const SENSITIVE_PATH_PARTS = ["session-body", "session_body"];
17
- const SENSITIVE_BASENAMES = new Set(["body"]);
17
+ const SENSITIVE_BASENAMES = /* @__PURE__ */ new Set(["body"]);
18
18
  function printLogsEffect(input) {
19
19
  return Effect.gen(function* () {
20
20
  const run = yield* requireRunEffect(input.store, input.runId);
@@ -1,13 +1,13 @@
1
1
  import { parseLogicalSegment } from "./logical-segment.js";
2
2
  import { Effect } from "effect";
3
3
  //#region src/run-control/run-command-domain.ts
4
- const ACTIVE_RUN_STATUSES = new Set([
4
+ const ACTIVE_RUN_STATUSES = /* @__PURE__ */ new Set([
5
5
  "queued",
6
6
  "starting",
7
7
  "running",
8
8
  "stalled"
9
9
  ]);
10
- const ACTIVE_NODE_STATUSES = new Set([
10
+ const ACTIVE_NODE_STATUSES = /* @__PURE__ */ new Set([
11
11
  "queued",
12
12
  "starting",
13
13
  "running",
@@ -132,4 +132,4 @@ function errorMessage(error) {
132
132
  return error instanceof Error ? error.message : String(error);
133
133
  }
134
134
  //#endregion
135
- export { createRunStoreRuntimeReporter };
135
+ export { createRunStoreRuntimeReporter, createRunStoreRuntimeReporterEffect };
@@ -20,4 +20,4 @@ function runPaths(workspaceRoot, runId) {
20
20
  };
21
21
  }
22
22
  //#endregion
23
- export { runPaths };
23
+ export { RUNS_DIRECTORY, runPaths };
@@ -57,4 +57,4 @@ function submitResultEffect(runId, nodeId, resultJson) {
57
57
  }));
58
58
  }
59
59
  //#endregion
60
- export { registerSubmitResultSubcommand };
60
+ export { recordSubmitResult, registerSubmitResultSubcommand };
@@ -3,7 +3,7 @@ import { createSerializedWriteQueue } from "../serialized-write-queue.js";
3
3
  import { createRunStoreRuntimeReporter } from "./runtime-reporter.js";
4
4
  import { Effect } from "effect";
5
5
  //#region src/run-control/supervisor.ts
6
- const RUNNING_NODE_EVENT_TYPES = new Set([
6
+ const RUNNING_NODE_EVENT_TYPES = /* @__PURE__ */ new Set([
7
7
  "agent.start",
8
8
  "artifact.check.start",
9
9
  "gate.start",
@@ -193,4 +193,4 @@ function shouldMarkNodeRunning(event) {
193
193
  }
194
194
  }
195
195
  //#endregion
196
- export { createRunControlSupervisor };
196
+ export { createRunControlSupervisor, createRunControlSupervisorEffect };
@@ -347,4 +347,4 @@ function shellQuote(value) {
347
347
  return `'${value.replaceAll("'", `'\\''`)}'`;
348
348
  }
349
349
  //#endregion
350
- export { commitAndPushNodeRef, mergeDependencyRefs, prepareRunnerGitWorkspace, promoteFinalRef, runAuthenticatedGit };
350
+ export { commitAndPushNodeRef, mergeDependencyRefs, prepareRunnerGitWorkspace, promoteFinalRef, runAuthenticatedGit, runnerCommitMessage };
@@ -572,4 +572,4 @@ function createRunnerLogger(options) {
572
572
  }, pino.multistream(streams, { dedupe: true }));
573
573
  }
574
574
  //#endregion
575
- export { runRunnerCommand, runnerTaskTextEffect };
575
+ export { nodeProcessExitCode, runRunnerCommand, runnerTaskTextEffect };
@@ -124,4 +124,4 @@ type RuntimeObservabilityEvent = {
124
124
  type: "runtime.retry.exhausted";
125
125
  };
126
126
  //#endregion
127
- export { RuntimeActorDescriptor, RuntimeObservabilityEvent };
127
+ export { RetryReason, RuntimeActorDescriptor, RuntimeActorKind, RuntimeObservabilityEvent };
@@ -1,2 +1,2 @@
1
- import "./agent-node.js";
2
- export {};
1
+ import { executeAgentNode } from "./agent-node.js";
2
+ export { executeAgentNode };
@@ -1,2 +1,2 @@
1
- import "./builtins.js";
2
- export {};
1
+ import { executeBuiltin } from "./builtins.js";
2
+ export { executeBuiltin };
@@ -35,7 +35,7 @@ function pathFromPorcelainEntry(entry) {
35
35
  return path ? [path] : [];
36
36
  }
37
37
  function diffChangedFiles(before, after, worktreePath) {
38
- const files = [...new Set([...before.files, ...after.files])].filter((file) => !before.files.has(file) || before.fingerprints.get(file) !== (after.fingerprints.get(file) ?? fileFingerprint(worktreePath, file)));
38
+ const files = [.../* @__PURE__ */ new Set([...before.files, ...after.files])].filter((file) => !before.files.has(file) || before.fingerprints.get(file) !== (after.fingerprints.get(file) ?? fileFingerprint(worktreePath, file)));
39
39
  return {
40
40
  files: new Set(files),
41
41
  fingerprints: new Map(files.map((file) => [file, after.fingerprints.get(file) ?? fileFingerprint(worktreePath, file)]))
@@ -1,2 +1,2 @@
1
- import "./changed-files.js";
2
- export {};
1
+ import { diffChangedFiles, snapshotChangedFiles } from "./changed-files.js";
2
+ export { diffChangedFiles, snapshotChangedFiles };
@@ -1,2 +1,2 @@
1
- import "./command-executor.js";
2
- export {};
1
+ import { executeCommand } from "./command-executor.js";
2
+ export { executeCommand };
@@ -1,2 +1,2 @@
1
- import "./context.js";
2
- export {};
1
+ import { createRuntimeContext, generateRuntimeRunId, resolveWorkflowSelection } from "./context.js";
2
+ export { createRuntimeContext, generateRuntimeRunId, resolveWorkflowSelection };
@@ -1 +1,2 @@
1
- import { AcceptanceCriterion, HookRuntimePolicy, NodeExecutionState, NodeStatus, PipelineRuntimeEvent, PipelineRuntimeObservabilityLevel, PipelineRuntimeOptions, PipelineRuntimeResult, PipelineTaskContext, RuntimeFailure, RuntimeGateResult, RuntimeNodeResult, RuntimeStructuredOutput, UnmetCriterion } from "./contracts.js";
1
+ import { AcceptanceCriterion, HookRuntimePolicy, NodeExecutionState, NodeStatus, PipelineRuntimeEvent, PipelineRuntimeObservabilityLevel, PipelineRuntimeOptions, PipelineRuntimeResult, PipelineTaskContext, RuntimeFailure, RuntimeGateResult, RuntimeNodeResult, RuntimeStructuredOutput, UnmetCriterion } from "./contracts.js";
2
+ export { AcceptanceCriterion, HookRuntimePolicy, NodeExecutionState, NodeStatus, PipelineRuntimeEvent, PipelineRuntimeObservabilityLevel, PipelineRuntimeOptions, PipelineRuntimeResult, PipelineTaskContext, RuntimeFailure, RuntimeGateResult, RuntimeNodeResult, RuntimeStructuredOutput, UnmetCriterion };
@@ -1,2 +1,2 @@
1
- import "./drain-merge.js";
2
- export {};
1
+ import { executeDrainMergeBuiltin } from "./drain-merge.js";
2
+ export { executeDrainMergeBuiltin };
@@ -3,7 +3,7 @@ import { runtimeActorId } from "../actor-ids.js";
3
3
  import { parseRuntimeOutput, validateJsonSchemaSource } from "../json-validation/json-validation.js";
4
4
  import "../json-validation/index.js";
5
5
  //#region src/runtime/events/events.ts
6
- const warningRuntimeObservabilityTypes = new Set([
6
+ const warningRuntimeObservabilityTypes = /* @__PURE__ */ new Set([
7
7
  "runtime.gate.cancelled",
8
8
  "runtime.gate.failed",
9
9
  "runtime.hook.failed",
@@ -15,7 +15,7 @@ const primaryRuntimeObservabilityPrefixes = [
15
15
  "runtime.hook.",
16
16
  "runtime.state."
17
17
  ];
18
- const structuredOutputFormats = new Set([
18
+ const structuredOutputFormats = /* @__PURE__ */ new Set([
19
19
  "json",
20
20
  "json_schema",
21
21
  "jsonl"
@@ -1,2 +1,2 @@
1
- import "./events.js";
2
- export {};
1
+ import { childReporter, createPublicRuntimeObservabilityEmitter, emit, emitAgentFinish, emitAgentStart, emitGateFinish, emitGateStart, emitNodeFinish, emitNodeOutputRecorded, emitNodeStart, emitWorkflowFinish, emitWorkflowPlanned, emitWorkflowStarted, runtimeNodeActorDescriptor, runtimeSystemId } from "./events.js";
2
+ export { childReporter, createPublicRuntimeObservabilityEmitter, emit, emitAgentFinish, emitAgentStart, emitGateFinish, emitGateStart, emitNodeFinish, emitNodeOutputRecorded, emitNodeStart, emitWorkflowFinish, emitWorkflowPlanned, emitWorkflowStarted, runtimeNodeActorDescriptor, runtimeSystemId };
@@ -1,5 +1,5 @@
1
- import "./contract.js";
2
- import "./gates.js";
3
- import "./registry.js";
4
- import "./orchestrator.js";
5
- export {};
1
+ import { forKind } from "./contract.js";
2
+ import { parseGateJson } from "./gates.js";
3
+ import { evaluateGate, gateRegistry } from "./registry.js";
4
+ import { evaluateNodeGates } from "./orchestrator.js";
5
+ export { evaluateGate, evaluateNodeGates, forKind, gateRegistry, parseGateJson };
@@ -106,4 +106,4 @@ function hasNonEmptyEvidence(value) {
106
106
  return Array.isArray(value) && value.filter((item) => typeof item === "string" && item.trim()).length > 0;
107
107
  }
108
108
  //#endregion
109
- export { evaluateAcceptanceGate };
109
+ export { acceptanceUnmetCriteria, evaluateAcceptanceGate };
@@ -20,7 +20,7 @@ function hookEnv(hook, context) {
20
20
  };
21
21
  }
22
22
  function commandHookEnvEntries(hook, context) {
23
- return [...new Set([...context.hookPolicy.envPassthrough, ...hook.env?.passthrough ?? []])].flatMap(commandHookEnvEntry);
23
+ return [.../* @__PURE__ */ new Set([...context.hookPolicy.envPassthrough, ...hook.env?.passthrough ?? []])].flatMap(commandHookEnvEntry);
24
24
  }
25
25
  function commandHookEnvEntry(name) {
26
26
  const value = process.env[name];
@@ -1,2 +1,2 @@
1
- import "./hooks.js";
2
- export {};
1
+ import { dispatchHooks } from "./hooks.js";
2
+ export { dispatchHooks };
@@ -1,2 +1,2 @@
1
- import "./json-validation.js";
2
- export {};
1
+ import { normalizeJsonSource, parseJsonObject, parseRuntimeOutput, readJsonSchemaSource, readOptionalFile, validateJsonSchemaSource } from "./json-validation.js";
2
+ export { normalizeJsonSource, parseJsonObject, parseRuntimeOutput, readJsonSchemaSource, readOptionalFile, validateJsonSchemaSource };
@@ -80,4 +80,4 @@ function parseSubmitResult(value) {
80
80
  return submitResultSchema.parse(value);
81
81
  }
82
82
  //#endregion
83
- export { parseSubmitResult };
83
+ export { parseSubmitResult, submitResultSchema };
@@ -95,4 +95,4 @@ function pendingNodeState(id) {
95
95
  };
96
96
  }
97
97
  //#endregion
98
- export { initialNodeStateStore };
98
+ export { NodeStateStore, initialNodeStateStore };
@@ -1,2 +1,2 @@
1
- import "./open-pull-request.js";
2
- export {};
1
+ import { executeOpenPullRequestBuiltin, openPullRequestProgram } from "./open-pull-request.js";
2
+ export { executeOpenPullRequestBuiltin, openPullRequestProgram };
@@ -200,7 +200,7 @@ function promptBody(plan) {
200
200
  ...plan.variant ? { variant: plan.variant } : {}
201
201
  };
202
202
  }
203
- const FLAGS_TAKING_VALUE = new Set([
203
+ const FLAGS_TAKING_VALUE = /* @__PURE__ */ new Set([
204
204
  "--agent",
205
205
  "--dir",
206
206
  "--file",
@@ -1,2 +1,2 @@
1
- import "./parallel-node.js";
2
- export {};
1
+ import { executeParallelNode } from "./parallel-node.js";
2
+ export { executeParallelNode };
@@ -30,4 +30,4 @@ function decideNodeRetry(input) {
30
30
  };
31
31
  }
32
32
  //#endregion
33
- export { decideNodeRetry, nodeRetryPolicy };
33
+ export { decideNodeRetry, nodeRetryPolicy, retryDelayMs };
@@ -132,7 +132,7 @@ function computeReadyNodeIds(input) {
132
132
  const completedIds = new Set((input.completed ?? []).map((r) => r.nodeId));
133
133
  const runningIds = new Set(input.running ?? []);
134
134
  const blockedIds = new Set(input.blocked ?? []);
135
- const settled = new Set([...completedIds, ...runningIds]);
135
+ const settled = /* @__PURE__ */ new Set([...completedIds, ...runningIds]);
136
136
  return orderedNodes(input.nodes).filter((node) => !(settled.has(node.id) || blockedIds.has(node.id))).filter((node) => node.needs.every((needId) => {
137
137
  const result = (input.completed ?? []).find((r) => r.nodeId === needId);
138
138
  if (result === void 0) return false;
@@ -13,4 +13,4 @@ declare const BacklogService_base: Context.ServiceClass<BacklogService, "Backlog
13
13
  }>;
14
14
  declare class BacklogService extends BacklogService_base {}
15
15
  //#endregion
16
- export { BacklogService };
16
+ export { BacklogCommandError, BacklogService };
@@ -21,4 +21,4 @@ const BacklogServiceLive = Layer.succeed(BacklogService, { run: (args, cwd) => E
21
21
  try: () => execa("backlog", [...args], { cwd })
22
22
  }).pipe(Effect.map((result) => result.stdout)) });
23
23
  //#endregion
24
- export { BacklogService, BacklogServiceLive };
24
+ export { BacklogCommandError, BacklogService, BacklogServiceLive };
@@ -1,9 +1,9 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
- import simpleGit$1 from "simple-git";
2
+ import simpleGit from "simple-git";
3
3
  //#region src/runtime/services/drain-merge-git-service.ts
4
4
  var DrainMergeGitService = class extends Context.Service()("DrainMergeGitService") {};
5
5
  const DrainMergeGitServiceLive = Layer.succeed(DrainMergeGitService, { create: (baseDir) => Effect.sync(() => {
6
- const git = simpleGit$1({ baseDir });
6
+ const git = simpleGit({ baseDir });
7
7
  return { raw: (args) => Effect.tryPromise(() => git.raw(args)) };
8
8
  }) });
9
9
  //#endregion
@@ -100,4 +100,4 @@ function kubectlErrorStdout(error) {
100
100
  return (error.stdout || "").trim();
101
101
  }
102
102
  //#endregion
103
- export { KubernetesArgoService, KubernetesArgoServiceLive };
103
+ export { KubernetesArgoService, KubernetesArgoServiceLive, resolveKubeConfig };
@@ -17,4 +17,4 @@ Layer.succeed(RunJournalFileService, {
17
17
  })
18
18
  });
19
19
  //#endregion
20
- export {};
20
+ export { RunJournalFileService };
@@ -127,4 +127,4 @@ function storeError(path, message) {
127
127
  });
128
128
  }
129
129
  //#endregion
130
- export { loadBacklogTaskStoreEffect };
130
+ export { BacklogTaskStoreError, loadBacklogTaskStoreEffect };
@@ -93,4 +93,4 @@ function errorMessage(error) {
93
93
  return error instanceof Error ? error.message : String(error);
94
94
  }
95
95
  //#endregion
96
- export { backlogTicketCompletionStoreEffect, completeTicket, conservativeLayerAJudge };
96
+ export { TicketCompletionError, backlogTicketCompletionStoreEffect, completeTicket, conservativeLayerAJudge };
@@ -21,7 +21,7 @@ function sequenceTicketBatchesEffect(graph, ticketIds = dependencyGraphNodeIds(g
21
21
  function scopedTicketIds(graph, rootId) {
22
22
  if (!rootId) return dependencyGraphNodeIds(graph.dependencyGraph).sort(compareTaskIds);
23
23
  if (!dependencyGraphHasNode(graph.dependencyGraph, rootId)) return [];
24
- const ids = new Set([rootId]);
24
+ const ids = /* @__PURE__ */ new Set([rootId]);
25
25
  const visit = (id) => {
26
26
  for (const child of graph.childrenByParentId.get(id) ?? []) {
27
27
  ids.add(child.id);
@@ -71,4 +71,4 @@ function compareTasks(a, b) {
71
71
  return compareBacklogTasks(a, b);
72
72
  }
73
73
  //#endregion
74
- export { buildTicketGraphEffect, compareTaskIds, predecessorIds, scopedTicketIds, sequenceTicketBatchesEffect };
74
+ export { TicketGraphError, buildTicketGraphEffect, compareTaskIds, predecessorIds, scopedTicketIds, sequenceTicketBatchesEffect };
@@ -41,4 +41,4 @@ declare const ticketPlanSchema: z.ZodObject<{
41
41
  }, z.core.$strict>;
42
42
  type TicketPlan = z.output<typeof ticketPlanSchema>;
43
43
  //#endregion
44
- export { TicketPlan };
44
+ export { TicketPlan, ticketPlanSchema };
@@ -236,6 +236,7 @@ momokaya:
236
236
  gitCredentialsSecretName: <git-credentials-secret-name>
237
237
  githubAuthSecretName: <github-auth-secret-name>
238
238
  imagePullSecretName: <image-pull-secret-name>
239
+ npmRegistryAuthSecretName: <npm-registry-auth-secret-name> # optional
239
240
  brokerAuth:
240
241
  secretName: <broker-api-key-secret-name>
241
242
  secretKey: api-key
@@ -334,6 +335,12 @@ Expected namespace resources:
334
335
  - The GitHub CLI auth Secret named by `submit.githubAuthSecretName` with key
335
336
  `hosts.yml`; this Secret is for `gh` and pull request delivery, not git
336
337
  clone/fetch/push authentication
338
+ - Optional: the private-registry auth Secret named by
339
+ `submit.npmRegistryAuthSecretName` with key `npmrc`, mounted at
340
+ `/root/.npmrc`; lets `.moka/bootstrap.sh`'s dependency install step (e.g.
341
+ `nub ci`) authenticate to private-scoped package registries, e.g. GitHub
342
+ Packages. Absent by default — bootstrap then only has public-registry
343
+ access, matching current behavior
337
344
  - A pipeline-console event sink reachable from the pod
338
345
 
339
346
  Credential issuance and rotation are owned by the cluster/infra layer, not by
package/package.json CHANGED
@@ -32,6 +32,8 @@
32
32
  "devDependencies": {
33
33
  "@biomejs/biome": "2.4.15",
34
34
  "@effect/vitest": "^4.0.0-beta.90",
35
+ "@mpsuesser/oxlint-plugin-effect": "0.3.0",
36
+ "@oisin-ee/oxlint-config": "1.0.0",
35
37
  "@semantic-release/commit-analyzer": "^13.0.1",
36
38
  "@semantic-release/exec": "^7.1.0",
37
39
  "@semantic-release/github": "^12.0.8",
@@ -42,6 +44,9 @@
42
44
  "@typescript/native-preview": "7.0.0-dev.20260629.1",
43
45
  "drizzle-kit": "0.31.10",
44
46
  "jscpd": "^4.0.5",
47
+ "oxfmt": "^0.56.0",
48
+ "oxlint": "^1.71.0",
49
+ "oxlint-tsgolint": "^0.23.0",
45
50
  "semantic-release": "^25.0.3",
46
51
  "tsdown": "^0.22.0",
47
52
  "typescript": "rc",
@@ -125,6 +130,7 @@
125
130
  "test:image": "mkdir -p /tmp/pipeline-test && printf '{}' > /tmp/pipeline-test/payload.json && printf 'kind: pipeline-schedule\\nversion: 1\\nschedule_id: smoke\\ngenerated_at: 2026-06-10T00:00:00.000Z\\nsource_entrypoint: custom\\ntask: smoke\\nroot_workflow: root\\nworkflows:\\n root:\\n nodes:\\n - id: smoke\\n kind: command\\n command: [true]\\n' > /tmp/pipeline-test/schedule.yaml && printf '{\"nodeId\":\"smoke\"}' > /tmp/pipeline-test/task.json && printf 'test-token' > /tmp/pipeline-test/event-token && docker build -t pipeline-runner:test . && docker run --rm -v /tmp/pipeline-test/payload.json:/etc/pipeline/payload.json:ro -v /tmp/pipeline-test/schedule.yaml:/etc/pipeline/schedule.yaml:ro -v /tmp/pipeline-test/task.json:/etc/pipeline/task.json:ro -v /tmp/pipeline-test/event-token:/etc/pipeline/event-auth/token:ro pipeline-runner:test runner-command --payload-file /etc/pipeline/payload.json --schedule-file /etc/pipeline/schedule.yaml; test $? -eq 64",
126
131
  "test:dogfood": "vitest run tests/dogfood-installed.test.ts",
127
132
  "test:live-runners": "PIPELINE_LIVE_RUNNERS=1 vitest run tests/dogfood-live-runners.test.ts",
133
+ "local-orbstack:migrate": "nub scripts/local-orbstack/migrate-postgres.ts",
128
134
  "typecheck": "tsc --noEmit",
129
135
  "build": "nub run build:cli",
130
136
  "check": "ultracite check",
@@ -132,7 +138,7 @@
132
138
  "prepack": "nub run build:cli"
133
139
  },
134
140
  "type": "module",
135
- "version": "3.19.5",
141
+ "version": "3.20.0",
136
142
  "description": "Config-driven multi-agent pipeline runner for repository work",
137
143
  "main": "./dist/index.js",
138
144
  "types": "./dist/index.d.ts",