@open330/oac 2026.222.1 → 2026.222.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +170 -1
- package/dist/{chunk-JROCVTM7.js → chunk-27FEE5KS.js} +39 -5
- package/dist/chunk-27FEE5KS.js.map +1 -0
- package/dist/{chunk-GPHH2IYN.js → chunk-ATVWSG75.js} +411 -163
- package/dist/chunk-ATVWSG75.js.map +1 -0
- package/dist/{chunk-7C7SC4TZ.js → chunk-I3TKNT4M.js} +9 -2
- package/dist/chunk-I3TKNT4M.js.map +1 -0
- package/dist/cli/cli.js +3 -3
- package/dist/cli/index.js +3 -3
- package/dist/completion/index.d.ts +1 -1
- package/dist/completion/index.js +1 -1
- package/dist/{config-DequKoFA.d.ts → config-DnzZ7w92.d.ts} +60 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +3 -1
- package/dist/dashboard/index.js +57 -11
- package/dist/dashboard/index.js.map +1 -1
- package/dist/discovery/index.d.ts +1 -1
- package/dist/execution/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-7C7SC4TZ.js.map +0 -1
- package/dist/chunk-GPHH2IYN.js.map +0 -1
- package/dist/chunk-JROCVTM7.js.map +0 -1
|
@@ -234,6 +234,11 @@ var AnalyzeSchema = z.object({
|
|
|
234
234
|
/** Directory for persisted context, relative to repo root. */
|
|
235
235
|
contextDir: z.string().min(1).default(".oac/context")
|
|
236
236
|
}).strict().default({});
|
|
237
|
+
var ContextPolicySchema = z.object({
|
|
238
|
+
mode: z.enum(["off", "warn", "enforce"]).default("off"),
|
|
239
|
+
requiredGlobs: z.array(z.string().min(1)).default([".context/plans/**/*.md"]),
|
|
240
|
+
maxAckItems: z.number().int().positive().default(3)
|
|
241
|
+
}).strict().default({});
|
|
237
242
|
var OacConfigSchema = z.object({
|
|
238
243
|
repos: z.array(RepoTargetSchema).default([]),
|
|
239
244
|
provider: ProviderSchema,
|
|
@@ -243,7 +248,8 @@ var OacConfigSchema = z.object({
|
|
|
243
248
|
completion: CompletionSchema,
|
|
244
249
|
tracking: TrackingSchema,
|
|
245
250
|
dashboard: DashboardSchema,
|
|
246
|
-
analyze: AnalyzeSchema
|
|
251
|
+
analyze: AnalyzeSchema,
|
|
252
|
+
context: ContextPolicySchema
|
|
247
253
|
}).strict();
|
|
248
254
|
var OacConfig = OacConfigSchema;
|
|
249
255
|
function defineConfig(config) {
|
|
@@ -347,6 +353,7 @@ export {
|
|
|
347
353
|
TrackingSchema,
|
|
348
354
|
DashboardSchema,
|
|
349
355
|
AnalyzeSchema,
|
|
356
|
+
ContextPolicySchema,
|
|
350
357
|
OacConfigSchema,
|
|
351
358
|
OacConfig,
|
|
352
359
|
defineConfig,
|
|
@@ -355,4 +362,4 @@ export {
|
|
|
355
362
|
createEventBus,
|
|
356
363
|
UNLIMITED_BUDGET
|
|
357
364
|
};
|
|
358
|
-
//# sourceMappingURL=chunk-
|
|
365
|
+
//# sourceMappingURL=chunk-I3TKNT4M.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/config.ts","../src/core/errors.ts","../src/core/event-bus.ts","../src/core/types.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { configError } from \"./errors.js\";\n\nconst ENV_VAR_PATTERN = /\\$\\{([A-Za-z_][A-Za-z0-9_]*)\\}/g;\n\nconst DEFAULT_DISCOVERY_EXCLUDE = [\n \"node_modules\",\n \"dist\",\n \"build\",\n \".git\",\n \"*.min.js\",\n \"vendor/\",\n] as const;\n\nexport const RepoTargetSchema = z.union([\n z.string().min(1),\n z\n .object({\n name: z.string().min(1),\n branch: z.string().min(1).optional(),\n })\n .strict(),\n]);\n\nexport const ProviderSchema = z\n .object({\n id: z.string().min(1).default(\"claude-code\"),\n options: z.record(z.string(), z.unknown()).default({}),\n })\n .strict()\n .default({});\n\nexport const BudgetSchema = z\n .object({\n totalTokens: z.number().int().positive().default(100_000),\n reservePercent: z.number().min(0).max(1).default(0.1),\n estimationPadding: z.number().positive().default(1.2),\n })\n .strict()\n .default({});\n\nexport const DiscoveryScannersSchema = z\n .object({\n lint: z.boolean().default(true),\n todo: z.boolean().default(true),\n testGap: z.boolean().default(true),\n deadCode: z.boolean().default(false),\n githubIssues: z.boolean().default(true),\n })\n .strict()\n .default({});\n\nexport const DiscoverySchema = z\n .object({\n scanners: DiscoveryScannersSchema,\n issueLabels: z.array(z.string().min(1)).default([\"good-first-issue\", \"help-wanted\", \"bug\"]),\n minPriority: z.number().int().min(0).max(100).default(20),\n maxTasks: z.number().int().positive().default(50),\n customScanners: z.array(z.string().min(1)).default([]),\n exclude: z.array(z.string().min(1)).default([...DEFAULT_DISCOVERY_EXCLUDE]),\n })\n .strict()\n .default({});\n\nexport const ValidationSchema = z\n .object({\n lint: z.boolean().default(true),\n test: z.boolean().default(true),\n typeCheck: z.boolean().default(true),\n maxDiffLines: z.number().int().positive().default(500),\n })\n .strict()\n .default({});\n\nexport const PrSchema = z\n .object({\n draft: z.boolean().default(false),\n labels: z.array(z.string().min(1)).default([\"oac-contribution\"]),\n reviewers: z.array(z.string().min(1)).default([]),\n assignees: z.array(z.string().min(1)).default([]),\n })\n .strict()\n .default({});\n\nexport const ExecutionSchema = z\n .object({\n concurrency: z.number().int().positive().default(2),\n taskTimeout: z.number().int().positive().default(300),\n maxRetries: z.number().int().min(0).default(2),\n mode: z.enum([\"new-pr\", \"update-pr\", \"direct-commit\"]).default(\"new-pr\"),\n branchPattern: z.string().min(1).default(\"oac/{date}/{task}\"),\n validation: ValidationSchema,\n pr: PrSchema,\n })\n .strict()\n .default({});\n\nexport const LinearIntegrationSchema = z\n .object({\n enabled: z.boolean().default(false),\n apiKey: z.string().min(1).optional(),\n teamId: z.string().min(1).optional(),\n })\n .strict()\n .default({})\n .superRefine((value, ctx) => {\n if (value.enabled && !value.apiKey) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"apiKey\"],\n message: \"Linear integration is enabled but apiKey is missing\",\n });\n }\n if (value.enabled && !value.teamId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"teamId\"],\n message: \"Linear integration is enabled but teamId is missing\",\n });\n }\n });\n\nexport const JiraIntegrationSchema = z\n .object({\n enabled: z.boolean().default(false),\n baseUrl: z.string().url().optional(),\n email: z.string().min(1).optional(),\n apiToken: z.string().min(1).optional(),\n projectKey: z.string().min(1).optional(),\n })\n .strict()\n .default({})\n .superRefine((value, ctx) => {\n if (!value.enabled) {\n return;\n }\n\n if (!value.baseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"baseUrl\"],\n message: \"Jira integration is enabled but baseUrl is missing\",\n });\n }\n if (!value.email) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"email\"],\n message: \"Jira integration is enabled but email is missing\",\n });\n }\n if (!value.apiToken) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"apiToken\"],\n message: \"Jira integration is enabled but apiToken is missing\",\n });\n }\n if (!value.projectKey) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"projectKey\"],\n message: \"Jira integration is enabled but projectKey is missing\",\n });\n }\n });\n\nexport const CompletionSchema = z\n .object({\n integrations: z\n .object({\n linear: LinearIntegrationSchema,\n jira: JiraIntegrationSchema,\n })\n .strict()\n .default({}),\n monitor: z\n .object({\n enabled: z.boolean().default(false),\n pollInterval: z.number().int().positive().default(300),\n autoRespondToReviews: z.boolean().default(false),\n autoDeleteBranch: z.boolean().default(true),\n })\n .strict()\n .default({}),\n })\n .strict()\n .default({});\n\nexport const TrackingSchema = z\n .object({\n directory: z.string().min(1).default(\".oac\"),\n autoCommit: z.boolean().default(false),\n gitTracked: z.boolean().default(true),\n })\n .strict()\n .default({});\n\nexport const DashboardSchema = z\n .object({\n port: z.number().int().min(1).max(65535).default(3141),\n openBrowser: z.boolean().default(true),\n })\n .strict()\n .default({});\n\nexport const AnalyzeSchema = z\n .object({\n /** Auto-run analysis before `oac run` if context is stale or missing. */\n autoAnalyze: z.boolean().default(true),\n /** Max age in ms before context is considered stale (default: 24h). */\n staleAfterMs: z.number().int().positive().default(86_400_000),\n /** Directory for persisted context, relative to repo root. */\n contextDir: z.string().min(1).default(\".oac/context\"),\n })\n .strict()\n .default({});\n\nexport const ContextPolicySchema = z\n .object({\n mode: z.enum([\"off\", \"warn\", \"enforce\"]).default(\"off\"),\n requiredGlobs: z.array(z.string().min(1)).default([\".context/plans/**/*.md\"]),\n maxAckItems: z.number().int().positive().default(3),\n })\n .strict()\n .default({});\n\nexport const OacConfigSchema = z\n .object({\n repos: z.array(RepoTargetSchema).default([]),\n provider: ProviderSchema,\n budget: BudgetSchema,\n discovery: DiscoverySchema,\n execution: ExecutionSchema,\n completion: CompletionSchema,\n tracking: TrackingSchema,\n dashboard: DashboardSchema,\n analyze: AnalyzeSchema,\n context: ContextPolicySchema,\n })\n .strict();\n\nexport const OacConfig = OacConfigSchema;\nexport type OacConfig = z.output<typeof OacConfigSchema>;\nexport type OacConfigInput = z.input<typeof OacConfigSchema>;\n\nexport interface LoadConfigOptions {\n env?: Record<string, string | undefined>;\n}\n\nexport function defineConfig(config: OacConfigInput): OacConfigInput {\n return config;\n}\n\nexport function interpolateEnvVars(\n value: string,\n env: Record<string, string | undefined> = getProcessEnv(),\n path: string[] = [],\n): string {\n return value.replaceAll(ENV_VAR_PATTERN, (_, variableName: string) => {\n const interpolated = env[variableName];\n if (interpolated !== undefined) {\n return interpolated;\n }\n\n throw configError(\n \"CONFIG_SECRET_MISSING\",\n `Environment variable ${variableName} is referenced in config but not set`,\n {\n context: {\n variableName,\n path: path.length > 0 ? path.join(\".\") : \"<root>\",\n },\n },\n );\n });\n}\n\nexport function loadConfig(config: unknown = {}, options: LoadConfigOptions = {}): OacConfig {\n const env = options.env ?? getProcessEnv();\n const interpolatedConfig = interpolateConfigEnvVars(config, env);\n const parsed = OacConfigSchema.safeParse(interpolatedConfig);\n\n if (parsed.success) {\n return parsed.data;\n }\n\n throw configError(\"CONFIG_INVALID\", \"Invalid OAC configuration\", {\n context: {\n issues: parsed.error.issues.map((issue) => ({\n code: issue.code,\n message: issue.message,\n path: issue.path.join(\".\"),\n })),\n },\n });\n}\n\nfunction interpolateConfigEnvVars(\n value: unknown,\n env: Record<string, string | undefined>,\n path: string[] = [],\n): unknown {\n if (typeof value === \"string\") {\n return interpolateEnvVars(value, env, path);\n }\n\n if (Array.isArray(value)) {\n return value.map((item, index) => interpolateConfigEnvVars(item, env, [...path, `${index}`]));\n }\n\n if (!isPlainObject(value)) {\n return value;\n }\n\n const interpolatedObject: Record<string, unknown> = {};\n\n for (const [key, nestedValue] of Object.entries(value)) {\n interpolatedObject[key] = interpolateConfigEnvVars(nestedValue, env, [...path, key]);\n }\n\n return interpolatedObject;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction getProcessEnv(): Record<string, string | undefined> {\n const globalProcess = globalThis as {\n process?: { env?: Record<string, string | undefined> };\n };\n return globalProcess.process?.env ?? {};\n}\n","export type OacErrorSeverity = \"fatal\" | \"recoverable\" | \"warning\";\n\nexport const REPO_ERROR_CODES = [\n \"REPO_NOT_FOUND\",\n \"REPO_ARCHIVED\",\n \"REPO_NO_PERMISSION\",\n \"REPO_CLONE_FAILED\",\n] as const;\n\nexport const DISCOVERY_ERROR_CODES = [\n \"SCANNER_FAILED\",\n \"SCANNER_TIMEOUT\",\n \"NO_TASKS_FOUND\",\n] as const;\n\nexport const BUDGET_ERROR_CODES = [\"BUDGET_INSUFFICIENT\", \"TOKENIZER_UNAVAILABLE\"] as const;\n\nexport const EXECUTION_ERROR_CODES = [\n \"AGENT_NOT_AVAILABLE\",\n \"AGENT_EXECUTION_FAILED\",\n \"AGENT_TIMEOUT\",\n \"AGENT_OOM\",\n \"AGENT_TOKEN_LIMIT\",\n \"AGENT_RATE_LIMITED\",\n \"VALIDATION_LINT_FAILED\",\n \"VALIDATION_TEST_FAILED\",\n \"VALIDATION_DIFF_TOO_LARGE\",\n \"VALIDATION_FORBIDDEN_PATTERN\",\n] as const;\n\nexport const COMPLETION_ERROR_CODES = [\n \"PR_CREATION_FAILED\",\n \"PR_PUSH_REJECTED\",\n \"WEBHOOK_DELIVERY_FAILED\",\n] as const;\n\nexport const CONFIG_ERROR_CODES = [\"CONFIG_INVALID\", \"CONFIG_SECRET_MISSING\"] as const;\n\nexport const SYSTEM_ERROR_CODES = [\"NETWORK_ERROR\", \"DISK_SPACE_LOW\", \"GIT_LOCK_FAILED\"] as const;\n\nexport const OAC_ERROR_CODES = [\n ...REPO_ERROR_CODES,\n ...DISCOVERY_ERROR_CODES,\n ...BUDGET_ERROR_CODES,\n ...EXECUTION_ERROR_CODES,\n ...COMPLETION_ERROR_CODES,\n ...CONFIG_ERROR_CODES,\n ...SYSTEM_ERROR_CODES,\n] as const;\n\nexport type RepoErrorCode = (typeof REPO_ERROR_CODES)[number];\nexport type DiscoveryErrorCode = (typeof DISCOVERY_ERROR_CODES)[number];\nexport type BudgetErrorCode = (typeof BUDGET_ERROR_CODES)[number];\nexport type ExecutionErrorCode = (typeof EXECUTION_ERROR_CODES)[number];\nexport type CompletionErrorCode = (typeof COMPLETION_ERROR_CODES)[number];\nexport type ConfigErrorCode = (typeof CONFIG_ERROR_CODES)[number];\nexport type SystemErrorCode = (typeof SYSTEM_ERROR_CODES)[number];\nexport type OacErrorCode = (typeof OAC_ERROR_CODES)[number];\n\nexport interface OacErrorOptions {\n severity?: OacErrorSeverity;\n context?: Record<string, unknown>;\n cause?: unknown;\n}\n\nexport class OacError extends Error {\n public readonly code: OacErrorCode;\n public readonly severity: OacErrorSeverity;\n public readonly context?: Record<string, unknown>;\n public override readonly cause?: unknown;\n\n public constructor(\n message: string,\n code: OacErrorCode,\n severity: OacErrorSeverity,\n context?: Record<string, unknown>,\n cause?: unknown,\n ) {\n super(message);\n this.name = \"OacError\";\n this.code = code;\n this.severity = severity;\n this.context = context;\n this.cause = cause;\n }\n}\n\nfunction createError(\n code: OacErrorCode,\n message: string,\n defaultSeverity: OacErrorSeverity,\n options: OacErrorOptions = {},\n): OacError {\n return new OacError(\n message,\n code,\n options.severity ?? defaultSeverity,\n options.context,\n options.cause,\n );\n}\n\nexport function repoError(\n code: RepoErrorCode,\n message: string,\n options: OacErrorOptions = {},\n): OacError {\n return createError(code, message, \"fatal\", options);\n}\n\nexport function discoveryError(\n code: DiscoveryErrorCode,\n message: string,\n options: OacErrorOptions = {},\n): OacError {\n return createError(code, message, \"recoverable\", options);\n}\n\nexport function budgetError(\n code: BudgetErrorCode,\n message: string,\n options: OacErrorOptions = {},\n): OacError {\n return createError(code, message, \"recoverable\", options);\n}\n\nexport function executionError(\n code: ExecutionErrorCode,\n message: string,\n options: OacErrorOptions = {},\n): OacError {\n return createError(code, message, \"recoverable\", options);\n}\n\nexport function completionError(\n code: CompletionErrorCode,\n message: string,\n options: OacErrorOptions = {},\n): OacError {\n return createError(code, message, \"recoverable\", options);\n}\n\nexport function configError(\n code: ConfigErrorCode,\n message: string,\n options: OacErrorOptions = {},\n): OacError {\n return createError(code, message, \"fatal\", options);\n}\n","import { EventEmitter } from \"eventemitter3\";\n\nimport type { OacError } from \"./errors.js\";\nimport type { ExecutionResult, ResolvedRepo, RunSummary, Task, TokenEstimate } from \"./types.js\";\n\nexport interface OacEvents {\n \"repo:resolved\": { repo: ResolvedRepo };\n \"task:discovered\": { tasks: Task[] };\n \"task:selected\": { task: Task; reason: string };\n \"budget:estimated\": { task: Task; estimate: TokenEstimate };\n \"execution:started\": { jobId: string; task: Task; agent: string };\n \"execution:progress\": { jobId: string; tokensUsed: number; stage: string };\n \"execution:completed\": { jobId: string; result: ExecutionResult };\n \"execution:failed\": { jobId: string; error: OacError };\n \"pr:created\": { jobId: string; prUrl: string };\n \"pr:merged\": { jobId: string; prUrl: string };\n \"run:completed\": { summary: RunSummary };\n}\n\ntype OacEventArgs = {\n [K in keyof OacEvents]: [payload: OacEvents[K]];\n};\n\nexport type OacEventBus = EventEmitter<OacEventArgs>;\n\nexport function createEventBus(): OacEventBus {\n return new EventEmitter<OacEventArgs>();\n}\n","export type AgentProviderId = \"claude-code\" | \"codex\" | \"opencode\" | (string & {});\n\n/**\n * Sentinel value representing an unlimited token budget.\n * Uses MAX_SAFE_INTEGER (passes Number.isFinite() checks in budget planner).\n */\nexport const UNLIMITED_BUDGET = Number.MAX_SAFE_INTEGER;\n\nexport interface ResolvedRepo {\n fullName: string;\n owner: string;\n name: string;\n localPath: string;\n worktreePath: string;\n meta: {\n defaultBranch: string;\n language?: string;\n languages: Record<string, number>;\n size: number;\n stars: number;\n openIssuesCount: number;\n topics: string[];\n license?: string;\n isArchived: boolean;\n isFork: boolean;\n permissions: {\n admin: boolean;\n maintain: boolean;\n push: boolean;\n triage: boolean;\n pull: boolean;\n };\n };\n git: {\n headSha: string;\n remoteUrl: string;\n isShallowClone: boolean;\n };\n}\n\nexport type TaskSource = \"lint\" | \"todo\" | \"test-gap\" | \"dead-code\" | \"github-issue\" | \"custom\";\n\nexport type TaskComplexity = \"trivial\" | \"simple\" | \"moderate\" | \"complex\";\n\nexport type ExecutionMode = \"new-pr\" | \"update-pr\" | \"direct-commit\";\n\nexport interface Task {\n id: string;\n source: TaskSource;\n title: string;\n description: string;\n targetFiles: string[];\n priority: number;\n complexity: TaskComplexity;\n executionMode: ExecutionMode;\n linkedIssue?: {\n number: number;\n url: string;\n labels: string[];\n };\n metadata: Record<string, unknown>;\n discoveredAt: string;\n /** When this task belongs to an epic, the parent epic's id. */\n parentEpicId?: string;\n}\n\n// ── Epics ─────────────────────────────────────────────────────\n\nexport type EpicStatus = \"pending\" | \"in-progress\" | \"completed\" | \"skipped\";\n\n/**\n * An Epic groups related tasks that should be executed together in a single\n * agent session, producing one PR with coherent multi-file changes.\n */\nexport interface Epic {\n id: string;\n title: string;\n description: string;\n /** Module scope, e.g. \"budget\", \"discovery\", or \"root\" */\n scope: string;\n subtasks: Task[];\n /** Broader file set the agent should read for context */\n contextFiles: string[];\n status: EpicStatus;\n priority: number;\n estimatedTokens: number;\n createdAt: string;\n completedAt?: string;\n metadata: Record<string, unknown>;\n}\n\nexport interface TokenEstimate {\n taskId: string;\n providerId: AgentProviderId;\n contextTokens: number;\n promptTokens: number;\n expectedOutputTokens: number;\n totalEstimatedTokens: number;\n confidence: number;\n feasible: boolean;\n estimatedCostUsd?: number;\n}\n\nexport interface ExecutionPlan {\n totalBudget: number;\n selectedTasks: Array<{\n task: Task;\n estimate: TokenEstimate;\n cumulativeBudgetUsed: number;\n }>;\n deferredTasks: Array<{\n task: Task;\n estimate: TokenEstimate;\n reason: \"budget_exceeded\" | \"low_confidence\" | \"too_complex\";\n }>;\n reserveTokens: number;\n remainingTokens: number;\n}\n\nexport interface ContributionTask {\n taskId: string;\n title: string;\n source: TaskSource;\n complexity: TaskComplexity;\n status: \"success\" | \"partial\" | \"failed\";\n tokensUsed: number;\n duration: number;\n filesChanged: string[];\n pr?: {\n number: number;\n url: string;\n status: \"open\" | \"merged\" | \"closed\";\n };\n linkedIssue?: {\n number: number;\n url: string;\n };\n error?: string;\n}\n\nexport interface ContributionLog {\n version: \"1.0\";\n runId: string;\n timestamp: string;\n contributor: {\n githubUsername: string;\n email?: string;\n };\n repo: {\n fullName: string;\n headSha: string;\n defaultBranch: string;\n };\n budget: {\n provider: AgentProviderId;\n totalTokensBudgeted: number;\n totalTokensUsed: number;\n estimatedCostUsd?: number;\n };\n tasks: ContributionTask[];\n metrics: {\n tasksDiscovered: number;\n tasksAttempted: number;\n tasksSucceeded: number;\n tasksFailed: number;\n totalDuration: number;\n totalFilesChanged: number;\n totalLinesAdded: number;\n totalLinesRemoved: number;\n };\n}\n\nexport interface ExecutionResult {\n success: boolean;\n exitCode: number;\n totalTokensUsed: number;\n filesChanged: string[];\n duration: number;\n error?: string;\n}\n\nexport interface RunSummary {\n runId: string;\n repo: string;\n provider: AgentProviderId;\n startedAt: string;\n completedAt: string;\n duration: number;\n budget: {\n totalTokens: number;\n reserveTokens: number;\n usedTokens: number;\n remainingTokens: number;\n estimatedCostUsd?: number;\n };\n tasks: {\n discovered: number;\n selected: number;\n attempted: number;\n succeeded: number;\n failed: number;\n deferred: number;\n };\n pullRequests: {\n created: number;\n merged: number;\n urls: string[];\n };\n}\n"],"mappings":"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","names":[]}
|
package/dist/cli/cli.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createCliProgram,
|
|
3
3
|
runCli
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-ATVWSG75.js";
|
|
5
5
|
import "../chunk-UCYK4Z6O.js";
|
|
6
6
|
import "../chunk-ZJBLRKCV.js";
|
|
7
7
|
import "../chunk-ALBVUNUY.js";
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-27FEE5KS.js";
|
|
9
|
+
import "../chunk-I3TKNT4M.js";
|
|
10
10
|
import "../chunk-JDFAJP45.js";
|
|
11
11
|
import "../chunk-LQC5DLT7.js";
|
|
12
12
|
export {
|
package/dist/cli/index.js
CHANGED
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
EXIT_CONFIG_ERROR,
|
|
5
5
|
EXIT_GENERAL_ERROR,
|
|
6
6
|
runCli
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-ATVWSG75.js";
|
|
8
8
|
import "../chunk-UCYK4Z6O.js";
|
|
9
9
|
import "../chunk-ZJBLRKCV.js";
|
|
10
10
|
import "../chunk-ALBVUNUY.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-27FEE5KS.js";
|
|
12
|
+
import "../chunk-I3TKNT4M.js";
|
|
13
13
|
import "../chunk-JDFAJP45.js";
|
|
14
14
|
import "../chunk-LQC5DLT7.js";
|
|
15
15
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { R as ResolvedRepo, T as Task, e as ExecutionResult } from '../types-Ck7IucqK.js';
|
|
2
2
|
import { Octokit } from '@octokit/rest';
|
|
3
|
-
import { O as OacConfig } from '../config-
|
|
3
|
+
import { O as OacConfig } from '../config-DnzZ7w92.js';
|
|
4
4
|
import { k as OacEventBus } from '../event-bus-KiuR6e3P.js';
|
|
5
5
|
import 'zod';
|
|
6
6
|
import 'eventemitter3';
|
package/dist/completion/index.js
CHANGED
|
@@ -442,6 +442,19 @@ declare const AnalyzeSchema: z.ZodDefault<z.ZodObject<{
|
|
|
442
442
|
staleAfterMs?: number | undefined;
|
|
443
443
|
contextDir?: string | undefined;
|
|
444
444
|
}>>;
|
|
445
|
+
declare const ContextPolicySchema: z.ZodDefault<z.ZodObject<{
|
|
446
|
+
mode: z.ZodDefault<z.ZodEnum<["off", "warn", "enforce"]>>;
|
|
447
|
+
requiredGlobs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
448
|
+
maxAckItems: z.ZodDefault<z.ZodNumber>;
|
|
449
|
+
}, "strict", z.ZodTypeAny, {
|
|
450
|
+
mode: "off" | "warn" | "enforce";
|
|
451
|
+
requiredGlobs: string[];
|
|
452
|
+
maxAckItems: number;
|
|
453
|
+
}, {
|
|
454
|
+
mode?: "off" | "warn" | "enforce" | undefined;
|
|
455
|
+
requiredGlobs?: string[] | undefined;
|
|
456
|
+
maxAckItems?: number | undefined;
|
|
457
|
+
}>>;
|
|
445
458
|
declare const OacConfigSchema: z.ZodObject<{
|
|
446
459
|
repos: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
447
460
|
name: z.ZodString;
|
|
@@ -782,6 +795,19 @@ declare const OacConfigSchema: z.ZodObject<{
|
|
|
782
795
|
staleAfterMs?: number | undefined;
|
|
783
796
|
contextDir?: string | undefined;
|
|
784
797
|
}>>;
|
|
798
|
+
context: z.ZodDefault<z.ZodObject<{
|
|
799
|
+
mode: z.ZodDefault<z.ZodEnum<["off", "warn", "enforce"]>>;
|
|
800
|
+
requiredGlobs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
801
|
+
maxAckItems: z.ZodDefault<z.ZodNumber>;
|
|
802
|
+
}, "strict", z.ZodTypeAny, {
|
|
803
|
+
mode: "off" | "warn" | "enforce";
|
|
804
|
+
requiredGlobs: string[];
|
|
805
|
+
maxAckItems: number;
|
|
806
|
+
}, {
|
|
807
|
+
mode?: "off" | "warn" | "enforce" | undefined;
|
|
808
|
+
requiredGlobs?: string[] | undefined;
|
|
809
|
+
maxAckItems?: number | undefined;
|
|
810
|
+
}>>;
|
|
785
811
|
}, "strict", z.ZodTypeAny, {
|
|
786
812
|
repos: (string | {
|
|
787
813
|
name: string;
|
|
@@ -865,6 +891,11 @@ declare const OacConfigSchema: z.ZodObject<{
|
|
|
865
891
|
staleAfterMs: number;
|
|
866
892
|
contextDir: string;
|
|
867
893
|
};
|
|
894
|
+
context: {
|
|
895
|
+
mode: "off" | "warn" | "enforce";
|
|
896
|
+
requiredGlobs: string[];
|
|
897
|
+
maxAckItems: number;
|
|
898
|
+
};
|
|
868
899
|
}, {
|
|
869
900
|
repos?: (string | {
|
|
870
901
|
name: string;
|
|
@@ -948,6 +979,11 @@ declare const OacConfigSchema: z.ZodObject<{
|
|
|
948
979
|
staleAfterMs?: number | undefined;
|
|
949
980
|
contextDir?: string | undefined;
|
|
950
981
|
} | undefined;
|
|
982
|
+
context?: {
|
|
983
|
+
mode?: "off" | "warn" | "enforce" | undefined;
|
|
984
|
+
requiredGlobs?: string[] | undefined;
|
|
985
|
+
maxAckItems?: number | undefined;
|
|
986
|
+
} | undefined;
|
|
951
987
|
}>;
|
|
952
988
|
declare const OacConfig: z.ZodObject<{
|
|
953
989
|
repos: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
@@ -1289,6 +1325,19 @@ declare const OacConfig: z.ZodObject<{
|
|
|
1289
1325
|
staleAfterMs?: number | undefined;
|
|
1290
1326
|
contextDir?: string | undefined;
|
|
1291
1327
|
}>>;
|
|
1328
|
+
context: z.ZodDefault<z.ZodObject<{
|
|
1329
|
+
mode: z.ZodDefault<z.ZodEnum<["off", "warn", "enforce"]>>;
|
|
1330
|
+
requiredGlobs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1331
|
+
maxAckItems: z.ZodDefault<z.ZodNumber>;
|
|
1332
|
+
}, "strict", z.ZodTypeAny, {
|
|
1333
|
+
mode: "off" | "warn" | "enforce";
|
|
1334
|
+
requiredGlobs: string[];
|
|
1335
|
+
maxAckItems: number;
|
|
1336
|
+
}, {
|
|
1337
|
+
mode?: "off" | "warn" | "enforce" | undefined;
|
|
1338
|
+
requiredGlobs?: string[] | undefined;
|
|
1339
|
+
maxAckItems?: number | undefined;
|
|
1340
|
+
}>>;
|
|
1292
1341
|
}, "strict", z.ZodTypeAny, {
|
|
1293
1342
|
repos: (string | {
|
|
1294
1343
|
name: string;
|
|
@@ -1372,6 +1421,11 @@ declare const OacConfig: z.ZodObject<{
|
|
|
1372
1421
|
staleAfterMs: number;
|
|
1373
1422
|
contextDir: string;
|
|
1374
1423
|
};
|
|
1424
|
+
context: {
|
|
1425
|
+
mode: "off" | "warn" | "enforce";
|
|
1426
|
+
requiredGlobs: string[];
|
|
1427
|
+
maxAckItems: number;
|
|
1428
|
+
};
|
|
1375
1429
|
}, {
|
|
1376
1430
|
repos?: (string | {
|
|
1377
1431
|
name: string;
|
|
@@ -1455,6 +1509,11 @@ declare const OacConfig: z.ZodObject<{
|
|
|
1455
1509
|
staleAfterMs?: number | undefined;
|
|
1456
1510
|
contextDir?: string | undefined;
|
|
1457
1511
|
} | undefined;
|
|
1512
|
+
context?: {
|
|
1513
|
+
mode?: "off" | "warn" | "enforce" | undefined;
|
|
1514
|
+
requiredGlobs?: string[] | undefined;
|
|
1515
|
+
maxAckItems?: number | undefined;
|
|
1516
|
+
} | undefined;
|
|
1458
1517
|
}>;
|
|
1459
1518
|
type OacConfig = z.output<typeof OacConfigSchema>;
|
|
1460
1519
|
type OacConfigInput = z.input<typeof OacConfigSchema>;
|
|
@@ -1465,4 +1524,4 @@ declare function defineConfig(config: OacConfigInput): OacConfigInput;
|
|
|
1465
1524
|
declare function interpolateEnvVars(value: string, env?: Record<string, string | undefined>, path?: string[]): string;
|
|
1466
1525
|
declare function loadConfig(config?: unknown, options?: LoadConfigOptions): OacConfig;
|
|
1467
1526
|
|
|
1468
|
-
export { AnalyzeSchema as A, BudgetSchema as B, CompletionSchema as C, DashboardSchema as D, ExecutionSchema as E, JiraIntegrationSchema as J, LinearIntegrationSchema as L, OacConfig as O, PrSchema as P, RepoTargetSchema as R, TrackingSchema as T, ValidationSchema as V,
|
|
1527
|
+
export { AnalyzeSchema as A, BudgetSchema as B, CompletionSchema as C, DashboardSchema as D, ExecutionSchema as E, JiraIntegrationSchema as J, LinearIntegrationSchema as L, OacConfig as O, PrSchema as P, RepoTargetSchema as R, TrackingSchema as T, ValidationSchema as V, ContextPolicySchema as a, DiscoveryScannersSchema as b, DiscoverySchema as c, type LoadConfigOptions as d, type OacConfigInput as e, OacConfigSchema as f, ProviderSchema as g, defineConfig as h, interpolateEnvVars as i, loadConfig as l };
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AnalyzeSchema, B as BudgetSchema, C as CompletionSchema, D as DashboardSchema,
|
|
1
|
+
export { A as AnalyzeSchema, B as BudgetSchema, C as CompletionSchema, a as ContextPolicySchema, D as DashboardSchema, b as DiscoveryScannersSchema, c as DiscoverySchema, E as ExecutionSchema, J as JiraIntegrationSchema, L as LinearIntegrationSchema, d as LoadConfigOptions, O as OacConfig, e as OacConfigInput, f as OacConfigSchema, P as PrSchema, g as ProviderSchema, R as RepoTargetSchema, T as TrackingSchema, V as ValidationSchema, h as defineConfig, i as interpolateEnvVars, l as loadConfig } from '../config-DnzZ7w92.js';
|
|
2
2
|
export { B as BUDGET_ERROR_CODES, a as BudgetErrorCode, C as COMPLETION_ERROR_CODES, b as CONFIG_ERROR_CODES, c as CompletionErrorCode, d as ConfigErrorCode, D as DISCOVERY_ERROR_CODES, e as DiscoveryErrorCode, E as EXECUTION_ERROR_CODES, f as ExecutionErrorCode, O as OAC_ERROR_CODES, g as OacError, h as OacErrorCode, i as OacErrorOptions, j as OacErrorSeverity, k as OacEventBus, l as OacEvents, R as REPO_ERROR_CODES, m as RepoErrorCode, S as SYSTEM_ERROR_CODES, n as SystemErrorCode, o as budgetError, p as completionError, q as configError, r as createEventBus, s as discoveryError, t as executionError, u as repoError } from '../event-bus-KiuR6e3P.js';
|
|
3
3
|
export { A as AgentProviderId, C as ContributionLog, a as ContributionTask, E as Epic, b as EpicStatus, c as ExecutionMode, d as ExecutionPlan, e as ExecutionResult, R as ResolvedRepo, f as RunSummary, T as Task, g as TaskComplexity, h as TaskSource, i as TokenEstimate, U as UNLIMITED_BUDGET } from '../types-Ck7IucqK.js';
|
|
4
4
|
import 'zod';
|
package/dist/core/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
COMPLETION_ERROR_CODES,
|
|
6
6
|
CONFIG_ERROR_CODES,
|
|
7
7
|
CompletionSchema,
|
|
8
|
+
ContextPolicySchema,
|
|
8
9
|
DISCOVERY_ERROR_CODES,
|
|
9
10
|
DashboardSchema,
|
|
10
11
|
DiscoveryScannersSchema,
|
|
@@ -35,7 +36,7 @@ import {
|
|
|
35
36
|
interpolateEnvVars,
|
|
36
37
|
loadConfig,
|
|
37
38
|
repoError
|
|
38
|
-
} from "../chunk-
|
|
39
|
+
} from "../chunk-I3TKNT4M.js";
|
|
39
40
|
import {
|
|
40
41
|
createMemoryMonitor,
|
|
41
42
|
getMemorySnapshot,
|
|
@@ -49,6 +50,7 @@ export {
|
|
|
49
50
|
COMPLETION_ERROR_CODES,
|
|
50
51
|
CONFIG_ERROR_CODES,
|
|
51
52
|
CompletionSchema,
|
|
53
|
+
ContextPolicySchema,
|
|
52
54
|
DISCOVERY_ERROR_CODES,
|
|
53
55
|
DashboardSchema,
|
|
54
56
|
DiscoveryScannersSchema,
|
package/dist/dashboard/index.js
CHANGED
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
CodexAdapter,
|
|
18
18
|
createSandbox,
|
|
19
19
|
executeTask
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-27FEE5KS.js";
|
|
21
21
|
import {
|
|
22
22
|
createEventBus
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-I3TKNT4M.js";
|
|
24
24
|
import "../chunk-JDFAJP45.js";
|
|
25
25
|
import {
|
|
26
26
|
buildLeaderboard,
|
|
@@ -31,12 +31,14 @@ import {
|
|
|
31
31
|
// src/dashboard/server.ts
|
|
32
32
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
33
33
|
import { readFile, readdir } from "fs/promises";
|
|
34
|
-
import { resolve } from "path";
|
|
34
|
+
import { resolve as resolve2 } from "path";
|
|
35
35
|
import cors from "@fastify/cors";
|
|
36
36
|
import Fastify from "fastify";
|
|
37
37
|
|
|
38
38
|
// src/dashboard/pipeline.ts
|
|
39
39
|
import { randomUUID } from "crypto";
|
|
40
|
+
import { mkdir, writeFile } from "fs/promises";
|
|
41
|
+
import { join, resolve } from "path";
|
|
40
42
|
import { execa } from "execa";
|
|
41
43
|
import PQueue from "p-queue";
|
|
42
44
|
function buildScanners() {
|
|
@@ -118,11 +120,9 @@ Automated contribution by OAC.`],
|
|
|
118
120
|
{ cwd: sandboxPath }
|
|
119
121
|
);
|
|
120
122
|
}
|
|
121
|
-
const diffResult = await execa(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
{ cwd: sandboxPath }
|
|
125
|
-
);
|
|
123
|
+
const diffResult = await execa("git", ["diff", "--name-only", `origin/${baseBranch}`, "HEAD"], {
|
|
124
|
+
cwd: sandboxPath
|
|
125
|
+
});
|
|
126
126
|
const changedFiles = diffResult.stdout.trim().split("\n").filter(Boolean);
|
|
127
127
|
return { hasChanges: changedFiles.length > 0, filesChanged: changedFiles };
|
|
128
128
|
} catch {
|
|
@@ -209,6 +209,45 @@ function resolveGithubUsername() {
|
|
|
209
209
|
}
|
|
210
210
|
return "oac-user";
|
|
211
211
|
}
|
|
212
|
+
async function writeContributionToSandbox(input) {
|
|
213
|
+
const { sandboxPath, task, execution, runId, repoOwner } = input;
|
|
214
|
+
const contributionsDir = resolve(sandboxPath, ".oac", "contributions");
|
|
215
|
+
await mkdir(contributionsDir, { recursive: true });
|
|
216
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
217
|
+
const contributor = resolveGithubUsername();
|
|
218
|
+
const datePrefix = timestamp.replace(/[:.]/g, "").replace("T", "-").slice(0, 15);
|
|
219
|
+
const safeTaskId = task.id.replace(/[^A-Za-z0-9-]/g, "-").replace(/-+/g, "-").slice(0, 40);
|
|
220
|
+
const filename = `${datePrefix}-${safeTaskId}.json`;
|
|
221
|
+
const metadata = {
|
|
222
|
+
version: "1.0",
|
|
223
|
+
runId,
|
|
224
|
+
timestamp,
|
|
225
|
+
contributor,
|
|
226
|
+
task: {
|
|
227
|
+
id: task.id,
|
|
228
|
+
title: task.title,
|
|
229
|
+
source: task.source,
|
|
230
|
+
complexity: task.complexity,
|
|
231
|
+
linkedIssue: task.linkedIssue ? { number: task.linkedIssue.number, url: task.linkedIssue.url } : void 0
|
|
232
|
+
},
|
|
233
|
+
execution: {
|
|
234
|
+
success: execution.success,
|
|
235
|
+
tokensUsed: execution.totalTokensUsed,
|
|
236
|
+
duration: execution.duration,
|
|
237
|
+
filesChanged: execution.filesChanged
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
const filePath = join(contributionsDir, filename);
|
|
241
|
+
await writeFile(filePath, `${JSON.stringify(metadata, null, 2)}
|
|
242
|
+
`, "utf8");
|
|
243
|
+
try {
|
|
244
|
+
await execa("git", ["add", filePath], { cwd: sandboxPath });
|
|
245
|
+
await execa("git", ["commit", "-m", "[OAC] Add contribution metadata"], {
|
|
246
|
+
cwd: sandboxPath
|
|
247
|
+
});
|
|
248
|
+
} catch {
|
|
249
|
+
}
|
|
250
|
+
}
|
|
212
251
|
async function executePipeline(config, onEvent) {
|
|
213
252
|
const runId = randomUUID();
|
|
214
253
|
const startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -330,6 +369,13 @@ async function executePipeline(config, onEvent) {
|
|
|
330
369
|
}
|
|
331
370
|
let pr;
|
|
332
371
|
if (execution.success && sandbox && execution.filesChanged.length > 0) {
|
|
372
|
+
await writeContributionToSandbox({
|
|
373
|
+
sandboxPath: sandbox.sandboxPath,
|
|
374
|
+
task: entry.task,
|
|
375
|
+
execution,
|
|
376
|
+
runId,
|
|
377
|
+
repoOwner: resolvedRepo.owner
|
|
378
|
+
});
|
|
333
379
|
emit({
|
|
334
380
|
type: "run:stage",
|
|
335
381
|
stage: "creating-pr",
|
|
@@ -1070,7 +1116,7 @@ function broadcastEvent(event) {
|
|
|
1070
1116
|
}
|
|
1071
1117
|
}
|
|
1072
1118
|
async function readContributionLogs(oacDir) {
|
|
1073
|
-
const contributionsPath =
|
|
1119
|
+
const contributionsPath = resolve2(oacDir, ".oac", "contributions");
|
|
1074
1120
|
let entries;
|
|
1075
1121
|
try {
|
|
1076
1122
|
entries = await readdir(contributionsPath, { withFileTypes: true, encoding: "utf8" });
|
|
@@ -1081,7 +1127,7 @@ async function readContributionLogs(oacDir) {
|
|
|
1081
1127
|
const results = await Promise.all(
|
|
1082
1128
|
files.map(async (fileName) => {
|
|
1083
1129
|
try {
|
|
1084
|
-
const content = await readFile(
|
|
1130
|
+
const content = await readFile(resolve2(contributionsPath, fileName), "utf8");
|
|
1085
1131
|
const parsed = contributionLogSchema.safeParse(JSON.parse(content));
|
|
1086
1132
|
return parsed.success ? parsed.data : null;
|
|
1087
1133
|
} catch {
|
|
@@ -1096,7 +1142,7 @@ async function readRunStatus(oacDir) {
|
|
|
1096
1142
|
return currentRun;
|
|
1097
1143
|
}
|
|
1098
1144
|
try {
|
|
1099
|
-
const content = await readFile(
|
|
1145
|
+
const content = await readFile(resolve2(oacDir, ".oac", "status.json"), "utf8");
|
|
1100
1146
|
return JSON.parse(content);
|
|
1101
1147
|
} catch {
|
|
1102
1148
|
return { status: "idle", message: "No active runs" };
|