@tickernelz/paperclip-pro-server 2026.926.0 → 2026.926.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.
Files changed (95) hide show
  1. package/dist/build-info.json +1 -1
  2. package/dist/routes/agents.d.ts.map +1 -1
  3. package/dist/routes/agents.js +116 -1
  4. package/dist/routes/agents.js.map +1 -1
  5. package/dist/routes/issues.d.ts.map +1 -1
  6. package/dist/routes/issues.js +79 -6
  7. package/dist/routes/issues.js.map +1 -1
  8. package/dist/routes/openapi.d.ts.map +1 -1
  9. package/dist/routes/openapi.js +30 -1
  10. package/dist/routes/openapi.js.map +1 -1
  11. package/dist/services/adapter-config-field-value.d.ts +12 -0
  12. package/dist/services/adapter-config-field-value.d.ts.map +1 -0
  13. package/dist/services/adapter-config-field-value.js +31 -0
  14. package/dist/services/adapter-config-field-value.js.map +1 -0
  15. package/dist/services/agent-adapter-config-batch.d.ts +26 -0
  16. package/dist/services/agent-adapter-config-batch.d.ts.map +1 -0
  17. package/dist/services/agent-adapter-config-batch.js +174 -0
  18. package/dist/services/agent-adapter-config-batch.js.map +1 -0
  19. package/dist/services/heartbeat.d.ts +4 -4
  20. package/dist/services/issue-model-override-inheritance.d.ts +13 -0
  21. package/dist/services/issue-model-override-inheritance.d.ts.map +1 -0
  22. package/dist/services/issue-model-override-inheritance.js +68 -0
  23. package/dist/services/issue-model-override-inheritance.js.map +1 -0
  24. package/dist/services/issue-run-model-override.d.ts +19 -4
  25. package/dist/services/issue-run-model-override.d.ts.map +1 -1
  26. package/dist/services/issue-run-model-override.js +71 -22
  27. package/dist/services/issue-run-model-override.js.map +1 -1
  28. package/dist/services/issues.d.ts.map +1 -1
  29. package/dist/services/issues.js +21 -0
  30. package/dist/services/issues.js.map +1 -1
  31. package/dist/services/native-runtime/native-session-executor.d.ts +1 -1
  32. package/dist/services/native-runtime/native-session-executor.d.ts.map +1 -1
  33. package/package.json +20 -20
  34. package/ui-dist/assets/{AgentAvatar-CWNp7Eqe.js → AgentAvatar-CnpBTXF0.js} +1 -1
  35. package/ui-dist/assets/{AgentIdentity-Bqzrcghn.js → AgentIdentity-CV55DQtR.js} +1 -1
  36. package/ui-dist/assets/{Agents.production-Cs7mMvAL.js → Agents.production-5Tba_pW_.js} +2 -2
  37. package/ui-dist/assets/{CompanyActivity.production-4bljbHSU.js → CompanyActivity.production-CONFWTe1.js} +1 -1
  38. package/ui-dist/assets/{CompanyExport-CBh7R3lQ.js → CompanyExport-CiOVCS4y.js} +1 -1
  39. package/ui-dist/assets/{CompanySkills.production-DEleeGzs.js → CompanySkills.production-gv4ej6PI.js} +1 -1
  40. package/ui-dist/assets/{Costs.production-Dm5j2nxX.js → Costs.production-C6rOIGNV.js} +1 -1
  41. package/ui-dist/assets/{EmptyState-D62UDLDa.js → EmptyState-DeVTy8IU.js} +1 -1
  42. package/ui-dist/assets/{MarkdownBody-DfGkmx3G.js → MarkdownBody-Da7yUIDf.js} +1 -1
  43. package/ui-dist/assets/{MarkdownEditor-ZwstkvWb.js → MarkdownEditor-7JCtdEaZ.js} +1 -1
  44. package/ui-dist/assets/{OrgChart.production-BWKofGdO.js → OrgChart.production-DYeuFtY_.js} +1 -1
  45. package/ui-dist/assets/{PageSkeleton-C0pPO_Gb.js → PageSkeleton-DRRnaWWU.js} +1 -1
  46. package/ui-dist/assets/{RoutineDetail.production-_auZa0K9.js → RoutineDetail.production-Bt4IHfSD.js} +1 -1
  47. package/ui-dist/assets/RoutineRunVariablesDialog-Bj-Q_Ua3.js +5 -0
  48. package/ui-dist/assets/{Routines.production-D8R6Ujt6.js → Routines.production-BBxSwg2A.js} +1 -1
  49. package/ui-dist/assets/{SidebarContext-B3vvFvTk.js → SidebarContext-CxjppFTY.js} +1 -1
  50. package/ui-dist/assets/{StatusIcon-BYqGFWup.js → StatusIcon-j05cEqDO.js} +1 -1
  51. package/ui-dist/assets/agents-ZcIBncVi.js +1 -0
  52. package/ui-dist/assets/{badge-CW7lQ_Zd.js → badge-B4sBXDQo.js} +1 -1
  53. package/ui-dist/assets/{bot-DIsSOxfs.js → bot-CcFVz40n.js} +1 -1
  54. package/ui-dist/assets/{button-BYQHEF4e.js → button-LkWt40cm.js} +1 -1
  55. package/ui-dist/assets/{card-CFXZOYds.js → card-DbvoJZ3K.js} +1 -1
  56. package/ui-dist/assets/{check-Cniv3It0.js → check-CgfxcCMv.js} +1 -1
  57. package/ui-dist/assets/{checkbox-MLVUJCCS.js → checkbox-CLAkJpms.js} +1 -1
  58. package/ui-dist/assets/{chevron-down-Dq0fsCvv.js → chevron-down-CpKmud_n.js} +1 -1
  59. package/ui-dist/assets/{chevron-right-C4o2Lqna.js → chevron-right-IZydUoW5.js} +1 -1
  60. package/ui-dist/assets/{clipboard-CfEDu5my.js → clipboard-CjMs5cp9.js} +1 -1
  61. package/ui-dist/assets/{company-members-tdITTHFY.js → company-members-Dyq_pnza.js} +1 -1
  62. package/ui-dist/assets/createLucideIcon-CZEG6UJ7.js +92 -0
  63. package/ui-dist/assets/{definition-B5Yyiufk.js → definition-B49KTmLW.js} +1 -1
  64. package/ui-dist/assets/{dist-DCpDFPbp.js → dist-Cqh7BG-j.js} +1 -1
  65. package/ui-dist/assets/{dist-bQQ2HFhw.js → dist-pDmgIRxg.js} +1 -1
  66. package/ui-dist/assets/{environments-awDXeIDD.js → environments-xbdxVBLT.js} +1 -1
  67. package/ui-dist/assets/{external-link-3uv6Ak2X.js → external-link-BbeUY6zf.js} +1 -1
  68. package/ui-dist/assets/{file-text-DWMD8a2i.js → file-text-BMJQ4LZs.js} +1 -1
  69. package/ui-dist/assets/{health-DY_y3c9e.js → health-Bj6kLXe5.js} +1 -1
  70. package/ui-dist/assets/{heartbeats-BQipXQOf.js → heartbeats-DFiFf4Zf.js} +1 -1
  71. package/ui-dist/assets/{index-N4w1Oco1.js → index-BRCs87uX.js} +162 -162
  72. package/ui-dist/assets/index-GCNIGBzC.css +1 -0
  73. package/ui-dist/assets/{input-B7ODc-rR.js → input-a7SggR2b.js} +1 -1
  74. package/ui-dist/assets/label-Dnc69R1W.js +5 -0
  75. package/ui-dist/assets/{loader-circle-DA6xS_rG.js → loader-circle-Cu72DKdC.js} +1 -1
  76. package/ui-dist/assets/{mention-chips-r4UB4Eiw.js → mention-chips-BEaOTvHT.js} +1 -1
  77. package/ui-dist/assets/{octagon-alert-DsI0y-RL.js → octagon-alert-DfqJ6RjK.js} +1 -1
  78. package/ui-dist/assets/{rotate-ccw-D6pz3VoJ.js → rotate-ccw-DiFaj3XM.js} +1 -1
  79. package/ui-dist/assets/{router-DcMYq5w_.js → router-G1KztA90.js} +1 -1
  80. package/ui-dist/assets/{save-CvrYa2yq.js → save-D9PtvKKu.js} +1 -1
  81. package/ui-dist/assets/{select-CV7s_3g2.js → select-DSr2hsz2.js} +1 -1
  82. package/ui-dist/assets/{sheet-CrBXG9pk.js → sheet-H27vJn3G.js} +1 -1
  83. package/ui-dist/assets/{skeleton-efW_R0t3.js → skeleton-CPVPMT4g.js} +1 -1
  84. package/ui-dist/assets/{tabs-4RdauNv3.js → tabs-D8G3-AL7.js} +1 -1
  85. package/ui-dist/assets/{triangle-alert-DQUol3t5.js → triangle-alert-DiD4Atur.js} +1 -1
  86. package/ui-dist/assets/{use-adapter-capabilities-pFfW1mOk.js → use-adapter-capabilities-D_QCYxa2.js} +1 -1
  87. package/ui-dist/assets/{useHiddenSettings-b1eurTXV.js → useHiddenSettings-vbDpbX0U.js} +1 -1
  88. package/ui-dist/assets/{zap-CKzX0hdL.js → zap-CCqZhqc3.js} +1 -1
  89. package/ui-dist/index.html +46 -46
  90. package/ui-dist/sw.js +1 -1
  91. package/ui-dist/assets/RoutineRunVariablesDialog-CUcwhS7L.js +0 -5
  92. package/ui-dist/assets/agents-CNina7HI.js +0 -1
  93. package/ui-dist/assets/createLucideIcon-CINAT48M.js +0 -92
  94. package/ui-dist/assets/index-BAoNTaz4.css +0 -1
  95. package/ui-dist/assets/label-BnqmTeef.js +0 -5
@@ -0,0 +1,12 @@
1
+ import type { ConfigFieldSchema } from "../adapters/types.js";
2
+ export declare class AdapterConfigFieldValueError extends Error {
3
+ readonly status: number;
4
+ constructor(message: string, status?: number);
5
+ }
6
+ export declare function isFreeTextAdapterConfigField(field: ConfigFieldSchema): boolean;
7
+ /** Validates one value against the adapter's published field schema. */
8
+ export declare function validateAdapterConfigFieldValue(field: ConfigFieldSchema, value: string, wording: {
9
+ clearHint: string;
10
+ unsupportedReason: string;
11
+ }): string;
12
+ //# sourceMappingURL=adapter-config-field-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-config-field-value.d.ts","sourceRoot":"","sources":["../../src/services/adapter-config-field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM,EAIxC;CACF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAE9E;AAED,wEAAwE;AACxE,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,CAsBR"}
@@ -0,0 +1,31 @@
1
+ const FREE_TEXT_FIELD_TYPES = { text: true, combobox: true };
2
+ export class AdapterConfigFieldValueError extends Error {
3
+ status;
4
+ constructor(message, status = 422) {
5
+ super(message);
6
+ this.name = "AdapterConfigFieldValueError";
7
+ this.status = status;
8
+ }
9
+ }
10
+ export function isFreeTextAdapterConfigField(field) {
11
+ return Boolean(FREE_TEXT_FIELD_TYPES[field.type]);
12
+ }
13
+ /** Validates one value against the adapter's published field schema. */
14
+ export function validateAdapterConfigFieldValue(field, value, wording) {
15
+ const trimmed = value.trim();
16
+ if (!trimmed) {
17
+ throw new AdapterConfigFieldValueError(`${field.label} cannot be empty; ${wording.clearHint}.`);
18
+ }
19
+ if (field.type === "select") {
20
+ const allowed = (field.options ?? []).map((option) => option.value);
21
+ if (!allowed.includes(trimmed)) {
22
+ throw new AdapterConfigFieldValueError(`${field.label} must be one of: ${allowed.join(", ")}.`);
23
+ }
24
+ return trimmed;
25
+ }
26
+ if (!isFreeTextAdapterConfigField(field)) {
27
+ throw new AdapterConfigFieldValueError(`${field.label} ${wording.unsupportedReason}.`);
28
+ }
29
+ return trimmed;
30
+ }
31
+ //# sourceMappingURL=adapter-config-field-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-config-field-value.js","sourceRoot":"","sources":["../../src/services/adapter-config-field-value.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAyB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEnF,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAC5C,MAAM,CAAS;IACxB,YAAY,OAAe,EAAE,MAAM,GAAG,GAAG;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAwB;IACnE,OAAO,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,+BAA+B,CAC7C,KAAwB,EACxB,KAAa,EACb,OAAyD;IAEzD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,4BAA4B,CACpC,GAAG,KAAK,CAAC,KAAK,qBAAqB,OAAO,CAAC,SAAS,GAAG,CACxD,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,4BAA4B,CACpC,GAAG,KAAK,CAAC,KAAK,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACxD,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,4BAA4B,CACpC,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,iBAAiB,GAAG,CAC/C,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { AgentAdapterConfigBatchFailure, AgentAdapterConfigBatchPreview } from "@tickernelz/paperclip-pro-shared";
2
+ /** The model-selection keys a batch may write; everything else stays single-agent. */
3
+ export declare const AGENT_ADAPTER_CONFIG_BATCH_KEYS: readonly string[];
4
+ export interface AgentAdapterConfigBatchAgent {
5
+ id: string;
6
+ name: string;
7
+ adapterType: string;
8
+ adapterConfig: Record<string, unknown> | null;
9
+ }
10
+ export interface AgentAdapterConfigBatchPlanEntry {
11
+ agent: AgentAdapterConfigBatchAgent;
12
+ adapterConfig: Record<string, unknown>;
13
+ changedKeys: string[];
14
+ }
15
+ export type AgentAdapterConfigBatchPlan = {
16
+ ok: true;
17
+ entries: AgentAdapterConfigBatchPlanEntry[];
18
+ } | {
19
+ ok: false;
20
+ failures: AgentAdapterConfigBatchFailure[];
21
+ };
22
+ /** The fields a batch may set: the intersection over the selected agents' schemas. */
23
+ export declare function buildAgentAdapterConfigBatchPreview(agents: AgentAdapterConfigBatchAgent[]): Promise<AgentAdapterConfigBatchPreview>;
24
+ /** Validates every value per agent; one invalid field rejects the whole batch. */
25
+ export declare function planAgentAdapterConfigBatch(agents: AgentAdapterConfigBatchAgent[], values: Record<string, string | null>): Promise<AgentAdapterConfigBatchPlan>;
26
+ //# sourceMappingURL=agent-adapter-config-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-adapter-config-batch.d.ts","sourceRoot":"","sources":["../../src/services/agent-adapter-config-batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAC9B,8BAA8B,EAE/B,MAAM,kCAAkC,CAAC;AAS1C,sFAAsF;AACtF,eAAO,MAAM,+BAA+B,EAAE,SAAS,MAAM,EAQ5D,CAAC;AAOF,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,EAAE,4BAA4B,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,gCAAgC,EAAE,CAAA;CAAE,GACzD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,8BAA8B,EAAE,CAAA;CAAE,CAAC;AAsD9D,sFAAsF;AACtF,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,4BAA4B,EAAE,GACrC,OAAO,CAAC,8BAA8B,CAAC,CA4CzC;AAED,kFAAkF;AAClF,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,4BAA4B,EAAE,EACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GACpC,OAAO,CAAC,2BAA2B,CAAC,CAwDtC"}
@@ -0,0 +1,174 @@
1
+ import { AdapterConfigFieldValueError, isFreeTextAdapterConfigField, validateAdapterConfigFieldValue, } from "./adapter-config-field-value.js";
2
+ import { resolveAdapterConfigSchema } from "./adapter-config-schema.js";
3
+ /** The model-selection keys a batch may write; everything else stays single-agent. */
4
+ export const AGENT_ADAPTER_CONFIG_BATCH_KEYS = [
5
+ "model",
6
+ "thinking",
7
+ "provider",
8
+ "smolModel",
9
+ "slowModel",
10
+ "planModel",
11
+ "modelCycle",
12
+ ];
13
+ /** `provider` on a paperclip_runner agent needs the single-agent transition checks. */
14
+ const PROVIDER_LOCKED_ADAPTER_TYPES = {
15
+ paperclip_runner: true,
16
+ };
17
+ function asRecord(value) {
18
+ return value && typeof value === "object" && !Array.isArray(value)
19
+ ? value
20
+ : {};
21
+ }
22
+ async function batchFieldsFor(agent) {
23
+ const resolved = await resolveAdapterConfigSchema(agent.adapterType);
24
+ if (!resolved.ok) {
25
+ return {
26
+ fields: {},
27
+ reason: resolved.reason === "not_registered"
28
+ ? `Adapter "${agent.adapterType}" is not registered.`
29
+ : `Adapter "${agent.adapterType}" does not publish a config schema.`,
30
+ };
31
+ }
32
+ const fields = {};
33
+ for (const field of resolved.schema.fields) {
34
+ if (!AGENT_ADAPTER_CONFIG_BATCH_KEYS.includes(field.key))
35
+ continue;
36
+ if (field.type !== "select" && !isFreeTextAdapterConfigField(field))
37
+ continue;
38
+ if (field.key === "provider" && PROVIDER_LOCKED_ADAPTER_TYPES[agent.adapterType]) {
39
+ continue;
40
+ }
41
+ fields[field.key] = field;
42
+ }
43
+ return {
44
+ fields,
45
+ reason: Object.keys(fields).length
46
+ ? null
47
+ : `Adapter "${agent.adapterType}" exposes no batch-editable model setting.`,
48
+ };
49
+ }
50
+ function describeField(key, field) {
51
+ return {
52
+ key,
53
+ label: field.label,
54
+ hint: field.hint ?? null,
55
+ freeText: isFreeTextAdapterConfigField(field),
56
+ options: (field.options ?? [])
57
+ .filter((option) => option.value.trim())
58
+ .map((option) => ({
59
+ value: option.value,
60
+ label: option.label,
61
+ ...(option.group ? { group: option.group } : {}),
62
+ })),
63
+ };
64
+ }
65
+ /** The fields a batch may set: the intersection over the selected agents' schemas. */
66
+ export async function buildAgentAdapterConfigBatchPreview(agents) {
67
+ const targets = [];
68
+ let shared = null;
69
+ for (const agent of agents) {
70
+ const { fields, reason } = await batchFieldsFor(agent);
71
+ const config = asRecord(agent.adapterConfig);
72
+ const current = {};
73
+ for (const key of Object.keys(fields)) {
74
+ const value = config[key];
75
+ current[key] = typeof value === "string" && value.trim() ? value.trim() : null;
76
+ }
77
+ targets.push({
78
+ agentId: agent.id,
79
+ name: agent.name,
80
+ adapterType: agent.adapterType,
81
+ eligible: reason === null,
82
+ reason,
83
+ current,
84
+ });
85
+ if (reason !== null)
86
+ continue;
87
+ const described = {};
88
+ for (const [key, field] of Object.entries(fields)) {
89
+ described[key] = describeField(key, field);
90
+ }
91
+ if (shared === null) {
92
+ shared = described;
93
+ continue;
94
+ }
95
+ for (const key of Object.keys(shared)) {
96
+ const candidate = described[key];
97
+ if (!candidate) {
98
+ delete shared[key];
99
+ continue;
100
+ }
101
+ const allowed = {};
102
+ for (const option of candidate.options)
103
+ allowed[option.value] = true;
104
+ shared[key] = {
105
+ ...shared[key],
106
+ freeText: shared[key].freeText && candidate.freeText,
107
+ options: shared[key].options.filter((option) => allowed[option.value]),
108
+ };
109
+ }
110
+ }
111
+ return { fields: Object.values(shared ?? {}), agents: targets };
112
+ }
113
+ /** Validates every value per agent; one invalid field rejects the whole batch. */
114
+ export async function planAgentAdapterConfigBatch(agents, values) {
115
+ const failures = [];
116
+ const entries = [];
117
+ for (const agent of agents) {
118
+ const { fields, reason } = await batchFieldsFor(agent);
119
+ if (reason !== null) {
120
+ failures.push({ agentId: agent.id, name: agent.name, key: null, message: reason });
121
+ continue;
122
+ }
123
+ const adapterConfig = { ...asRecord(agent.adapterConfig) };
124
+ const changedKeys = [];
125
+ for (const [key, value] of Object.entries(values)) {
126
+ const field = fields[key];
127
+ if (!field) {
128
+ failures.push({
129
+ agentId: agent.id,
130
+ name: agent.name,
131
+ key,
132
+ message: key === "provider" && PROVIDER_LOCKED_ADAPTER_TYPES[agent.adapterType]
133
+ ? `Change the provider of a ${agent.adapterType} agent one agent at a time.`
134
+ : `Adapter "${agent.adapterType}" does not expose a batch-editable "${key}" setting.`,
135
+ });
136
+ continue;
137
+ }
138
+ if (value === null) {
139
+ if (adapterConfig[key] === undefined)
140
+ continue;
141
+ delete adapterConfig[key];
142
+ changedKeys.push(key);
143
+ continue;
144
+ }
145
+ try {
146
+ const next = validateAdapterConfigFieldValue(field, value, {
147
+ clearHint: "clear the field instead",
148
+ unsupportedReason: "cannot be changed in a batch",
149
+ });
150
+ if (adapterConfig[key] === next)
151
+ continue;
152
+ adapterConfig[key] = next;
153
+ changedKeys.push(key);
154
+ }
155
+ catch (error) {
156
+ if (error instanceof AdapterConfigFieldValueError) {
157
+ failures.push({
158
+ agentId: agent.id,
159
+ name: agent.name,
160
+ key,
161
+ message: error.message,
162
+ });
163
+ continue;
164
+ }
165
+ throw error;
166
+ }
167
+ }
168
+ entries.push({ agent, adapterConfig, changedKeys: changedKeys.sort() });
169
+ }
170
+ if (failures.length > 0)
171
+ return { ok: false, failures };
172
+ return { ok: true, entries };
173
+ }
174
+ //# sourceMappingURL=agent-adapter-config-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-adapter-config-batch.js","sourceRoot":"","sources":["../../src/services/agent-adapter-config-batch.ts"],"names":[],"mappings":"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"}
@@ -2690,7 +2690,7 @@ export declare function heartbeatService(db: Db, options?: HeartbeatServiceOptio
2690
2690
  runId?: string | null;
2691
2691
  wakeReason?: string;
2692
2692
  }) => Promise<{
2693
- readonly reason?: undefined;
2693
+ reason?: undefined;
2694
2694
  outcome: "triggered";
2695
2695
  } | {
2696
2696
  outcome: "skipped";
@@ -2953,7 +2953,7 @@ export declare function heartbeatService(db: Db, options?: HeartbeatServiceOptio
2953
2953
  maxAttempts?: number;
2954
2954
  delayMs?: number;
2955
2955
  }) => Promise<{
2956
- readonly reason?: undefined;
2956
+ reason?: undefined;
2957
2957
  outcome: "retry_exhausted";
2958
2958
  attempt: number;
2959
2959
  maxAttempts: number;
@@ -2983,7 +2983,7 @@ export declare function heartbeatService(db: Db, options?: HeartbeatServiceOptio
2983
2983
  maxAttempts?: undefined;
2984
2984
  run?: undefined;
2985
2985
  } | {
2986
- readonly reason?: undefined;
2986
+ reason?: undefined;
2987
2987
  errorCode?: undefined;
2988
2988
  issueId?: undefined;
2989
2989
  outcome: "scheduled";
@@ -3064,7 +3064,7 @@ export declare function heartbeatService(db: Db, options?: HeartbeatServiceOptio
3064
3064
  maxAttempts: number;
3065
3065
  reusedExisting: boolean;
3066
3066
  } | {
3067
- readonly reason?: undefined;
3067
+ reason?: undefined;
3068
3068
  errorCode?: undefined;
3069
3069
  issueId?: undefined;
3070
3070
  reusedExisting?: undefined;
@@ -0,0 +1,13 @@
1
+ import { type Db } from "@tickernelz/paperclip-pro-db";
2
+ import type { IssueRunModelOverridePropagation, IssueRunModelOverrideSubtaskScope } from "@tickernelz/paperclip-pro-shared";
3
+ import { type IssueRunModelOverrideValues } from "./issue-run-model-override.js";
4
+ export declare const ISSUE_MODEL_OVERRIDE_SUBTREE_MAX_DEPTH = 10;
5
+ export declare const ISSUE_MODEL_OVERRIDE_SUBTREE_MAX_ISSUES = 500;
6
+ /** Rewrites the override on descendants that do not own one, bounded and cycle-safe. */
7
+ export declare function applyIssueRunModelOverrideToSubtree(db: Db, input: {
8
+ companyId: string;
9
+ rootIssueId: string;
10
+ values: IssueRunModelOverrideValues;
11
+ subtaskScope: IssueRunModelOverrideSubtaskScope;
12
+ }): Promise<IssueRunModelOverridePropagation>;
13
+ //# sourceMappingURL=issue-model-override-inheritance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-model-override-inheritance.d.ts","sourceRoot":"","sources":["../../src/services/issue-model-override-inheritance.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,EAAE,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EACV,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,sCAAsC,KAAK,CAAC;AACzD,eAAO,MAAM,uCAAuC,MAAM,CAAC;AAE3D,wFAAwF;AACxF,wBAAsB,mCAAmC,CACvD,EAAE,EAAE,EAAE,EACN,KAAK,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,2BAA2B,CAAC;IACpC,YAAY,EAAE,iCAAiC,CAAC;CACjD,GACA,OAAO,CAAC,gCAAgC,CAAC,CAmE3C"}
@@ -0,0 +1,68 @@
1
+ import { and, eq, inArray } from "drizzle-orm";
2
+ import { issues } from "@tickernelz/paperclip-pro-db";
3
+ import { hasExplicitIssueRunModelOverride, writeIssueRunModelOverride, } from "./issue-run-model-override.js";
4
+ export const ISSUE_MODEL_OVERRIDE_SUBTREE_MAX_DEPTH = 10;
5
+ export const ISSUE_MODEL_OVERRIDE_SUBTREE_MAX_ISSUES = 500;
6
+ /** Rewrites the override on descendants that do not own one, bounded and cycle-safe. */
7
+ export async function applyIssueRunModelOverrideToSubtree(db, input) {
8
+ const result = {
9
+ applied: 0,
10
+ skipped: 0,
11
+ visited: 0,
12
+ limitReached: false,
13
+ };
14
+ const visited = new Set([input.rootIssueId]);
15
+ let frontier = [input.rootIssueId];
16
+ for (let depth = 0; depth < ISSUE_MODEL_OVERRIDE_SUBTREE_MAX_DEPTH; depth += 1) {
17
+ if (frontier.length === 0)
18
+ break;
19
+ const children = await db
20
+ .select({
21
+ id: issues.id,
22
+ assigneeAdapterOverrides: issues.assigneeAdapterOverrides,
23
+ })
24
+ .from(issues)
25
+ .where(and(eq(issues.companyId, input.companyId), inArray(issues.parentId, frontier)));
26
+ const next = [];
27
+ for (const child of children) {
28
+ if (visited.has(child.id))
29
+ continue;
30
+ visited.add(child.id);
31
+ if (result.visited >= ISSUE_MODEL_OVERRIDE_SUBTREE_MAX_ISSUES) {
32
+ result.limitReached = true;
33
+ return result;
34
+ }
35
+ result.visited += 1;
36
+ if (hasExplicitIssueRunModelOverride(child.assigneeAdapterOverrides)) {
37
+ result.skipped += 1;
38
+ continue;
39
+ }
40
+ const nextOverrides = writeIssueRunModelOverride(child.assigneeAdapterOverrides, input.values, {
41
+ inheritToSubtasks: true,
42
+ subtaskScope: input.subtaskScope,
43
+ inherited: true,
44
+ sourceIssueId: input.rootIssueId,
45
+ });
46
+ await db
47
+ .update(issues)
48
+ .set({ assigneeAdapterOverrides: nextOverrides, updatedAt: new Date() })
49
+ .where(and(eq(issues.id, child.id), eq(issues.companyId, input.companyId)));
50
+ result.applied += 1;
51
+ next.push(child.id);
52
+ }
53
+ if (next.length === 0)
54
+ break;
55
+ frontier = next;
56
+ if (depth === ISSUE_MODEL_OVERRIDE_SUBTREE_MAX_DEPTH - 1) {
57
+ const deeper = await db
58
+ .select({ id: issues.id })
59
+ .from(issues)
60
+ .where(and(eq(issues.companyId, input.companyId), inArray(issues.parentId, next)))
61
+ .limit(1);
62
+ if (deeper.length > 0)
63
+ result.limitReached = true;
64
+ }
65
+ }
66
+ return result;
67
+ }
68
+ //# sourceMappingURL=issue-model-override-inheritance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-model-override-inheritance.js","sourceRoot":"","sources":["../../src/services/issue-model-override-inheritance.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,20 @@
1
- import type { IssueRunModelOverrideKey, IssueRunModelOverrideView } from "@tickernelz/paperclip-pro-shared";
2
- type IssueRunModelOverrideValues = Partial<Record<IssueRunModelOverrideKey, string | null>>;
1
+ import type { IssueRunModelOverrideInheritance, IssueRunModelOverrideKey, IssueRunModelOverridePropagation, IssueRunModelOverrideSubtaskScope, IssueRunModelOverrideView } from "@tickernelz/paperclip-pro-shared";
2
+ export declare const ISSUE_RUN_MODEL_OVERRIDE_KEYS: readonly IssueRunModelOverrideKey[];
3
+ export type IssueRunModelOverrideValues = Partial<Record<IssueRunModelOverrideKey, string | null>>;
3
4
  export declare class IssueRunModelOverrideError extends Error {
4
5
  readonly status: number;
5
6
  constructor(message: string, status?: number);
6
7
  }
8
+ export declare function readIssueRunModelOverrideInheritance(assigneeAdapterOverrides: unknown): IssueRunModelOverrideInheritance;
9
+ /** True when this issue carries an override a parent must never rewrite. */
10
+ export declare function hasExplicitIssueRunModelOverride(assigneeAdapterOverrides: unknown): boolean;
7
11
  /** Merges the override into `assigneeAdapterOverrides`, leaving its other keys alone. */
8
- export declare function writeIssueRunModelOverride(assigneeAdapterOverrides: unknown, values: IssueRunModelOverrideValues): Record<string, unknown> | null;
12
+ export declare function writeIssueRunModelOverride(assigneeAdapterOverrides: unknown, values: IssueRunModelOverrideValues, inheritance?: {
13
+ inheritToSubtasks: boolean;
14
+ subtaskScope: IssueRunModelOverrideSubtaskScope;
15
+ inherited?: boolean;
16
+ sourceIssueId?: string | null;
17
+ }): Record<string, unknown> | null;
9
18
  export interface IssueRunAdapterConfig {
10
19
  config: Record<string, unknown>;
11
20
  modelOverride: Record<IssueRunModelOverrideKey, string | null>;
@@ -22,10 +31,16 @@ export declare function buildIssueRunModelOverrideView(input: {
22
31
  adapterConfig: Record<string, unknown> | null;
23
32
  } | null;
24
33
  assigneeAdapterOverrides: unknown;
34
+ propagation?: IssueRunModelOverridePropagation | null;
25
35
  }): Promise<IssueRunModelOverrideView>;
26
36
  export declare function resolveIssueRunModelOverrideUpdate(input: {
27
37
  adapterType: string | null;
28
38
  values: IssueRunModelOverrideValues;
29
39
  }): Promise<IssueRunModelOverrideValues>;
30
- export {};
40
+ /** The override a new child inherits, or `null` when it keeps what it was created with. */
41
+ export declare function inheritIssueRunModelOverrideForChild(input: {
42
+ parentIssueId: string;
43
+ parentOverrides: unknown;
44
+ childOverrides: unknown;
45
+ }): Record<string, unknown> | null;
31
46
  //# sourceMappingURL=issue-run-model-override.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"issue-run-model-override.d.ts","sourceRoot":"","sources":["../../src/services/issue-run-model-override.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAW1C,KAAK,2BAA2B,GAAG,OAAO,CACxC,MAAM,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC,CAChD,CAAC;AAEF,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM,EAIxC;CACF;AAsBD,yFAAyF;AACzF,wBAAgB,0BAA0B,CACxC,wBAAwB,EAAE,OAAO,EACjC,MAAM,EAAE,2BAA2B,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAehC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAChE;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CACxC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/C,cAAc,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvE,qBAAqB,CAMvB;AAuFD,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC/C,GAAG,IAAI,CAAC;IACT,wBAAwB,EAAE,OAAO,CAAC;CACnC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAuCrC;AAED,wBAAsB,kCAAkC,CAAC,KAAK,EAAE;IAC9D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,2BAA2B,CAAC;CACrC,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAkBvC"}
1
+ {"version":3,"file":"issue-run-model-override.d.ts","sourceRoot":"","sources":["../../src/services/issue-run-model-override.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gCAAgC,EAChC,wBAAwB,EACxB,gCAAgC,EAChC,iCAAiC,EACjC,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAS1C,eAAO,MAAM,6BAA6B,EAAE,SAAS,wBAAwB,EAG5E,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,MAAM,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC,CAChD,CAAC;AAEF,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM,EAIxC;CACF;AAsBD,wBAAgB,oCAAoC,CAClD,wBAAwB,EAAE,OAAO,GAChC,gCAAgC,CAUlC;AAED,4EAA4E;AAC5E,wBAAgB,gCAAgC,CAC9C,wBAAwB,EAAE,OAAO,GAChC,OAAO,CAIT;AAED,yFAAyF;AACzF,wBAAgB,0BAA0B,CACxC,wBAAwB,EAAE,OAAO,EACjC,MAAM,EAAE,2BAA2B,EACnC,WAAW,CAAC,EAAE;IACZ,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,iCAAiC,CAAC;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA2BhC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAChE;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CACxC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/C,cAAc,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvE,qBAAqB,CAMvB;AAsED,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC/C,GAAG,IAAI,CAAC;IACT,wBAAwB,EAAE,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,gCAAgC,GAAG,IAAI,CAAC;CACvD,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAyCrC;AAED,wBAAsB,kCAAkC,CAAC,KAAK,EAAE;IAC9D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,2BAA2B,CAAC;CACrC,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAkBvC;AAED,2FAA2F;AAC3F,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAkBjC"}
@@ -1,9 +1,9 @@
1
+ import { AdapterConfigFieldValueError, isFreeTextAdapterConfigField, validateAdapterConfigFieldValue, } from "./adapter-config-field-value.js";
1
2
  import { resolveAdapterConfigSchema } from "./adapter-config-schema.js";
2
- const ISSUE_RUN_MODEL_OVERRIDE_KEYS = [
3
+ export const ISSUE_RUN_MODEL_OVERRIDE_KEYS = [
3
4
  "model",
4
5
  "thinking",
5
6
  ];
6
- const FREE_TEXT_FIELD_TYPES = { text: true, combobox: true };
7
7
  export class IssueRunModelOverrideError extends Error {
8
8
  status;
9
9
  constructor(message, status = 422) {
@@ -27,8 +27,25 @@ function readIssueRunModelOverride(assigneeAdapterOverrides) {
27
27
  thinking: nonEmptyString(adapterConfig.thinking),
28
28
  };
29
29
  }
30
+ export function readIssueRunModelOverrideInheritance(assigneeAdapterOverrides) {
31
+ const raw = asRecord(asRecord(assigneeAdapterOverrides).modelOverrideInheritance);
32
+ const subtaskScope = raw.subtaskScope === "new_and_existing" ? "new_and_existing" : "new";
33
+ return {
34
+ inheritToSubtasks: raw.inheritToSubtasks !== false,
35
+ subtaskScope,
36
+ inherited: raw.inherited === true,
37
+ sourceIssueId: nonEmptyString(raw.sourceIssueId),
38
+ };
39
+ }
40
+ /** True when this issue carries an override a parent must never rewrite. */
41
+ export function hasExplicitIssueRunModelOverride(assigneeAdapterOverrides) {
42
+ const stored = readIssueRunModelOverride(assigneeAdapterOverrides);
43
+ if (!stored.model && !stored.thinking)
44
+ return false;
45
+ return !readIssueRunModelOverrideInheritance(assigneeAdapterOverrides).inherited;
46
+ }
30
47
  /** Merges the override into `assigneeAdapterOverrides`, leaving its other keys alone. */
31
- export function writeIssueRunModelOverride(assigneeAdapterOverrides, values) {
48
+ export function writeIssueRunModelOverride(assigneeAdapterOverrides, values, inheritance) {
32
49
  const current = asRecord(assigneeAdapterOverrides);
33
50
  const adapterConfig = { ...asRecord(current.adapterConfig) };
34
51
  for (const key of ISSUE_RUN_MODEL_OVERRIDE_KEYS) {
@@ -46,6 +63,18 @@ export function writeIssueRunModelOverride(assigneeAdapterOverrides, values) {
46
63
  if (typeof current.useProjectWorkspace === "boolean") {
47
64
  next.useProjectWorkspace = current.useProjectWorkspace;
48
65
  }
66
+ const resolved = inheritance ?? readIssueRunModelOverrideInheritance(current);
67
+ const keepsOverride = Boolean(next.adapterConfig);
68
+ const inherited = keepsOverride && resolved.inherited === true;
69
+ if (inherited || !resolved.inheritToSubtasks || resolved.subtaskScope !== "new") {
70
+ next.modelOverrideInheritance = {
71
+ inheritToSubtasks: resolved.inheritToSubtasks,
72
+ subtaskScope: resolved.subtaskScope,
73
+ ...(inherited
74
+ ? { inherited: true, sourceIssueId: resolved.sourceIssueId ?? null }
75
+ : {}),
76
+ };
77
+ }
49
78
  return Object.keys(next).length > 0 ? next : null;
50
79
  }
51
80
  /** Layers the per-issue adapter overrides onto the run's execution config. */
@@ -59,23 +88,6 @@ export function buildIssueRunAdapterConfig(workspaceManagedConfig, issueOverride
59
88
  function findField(schema, key) {
60
89
  return schema.fields.find((field) => field.key === key) ?? null;
61
90
  }
62
- function validateIssueRunModelOverrideValue(field, value) {
63
- const trimmed = value.trim();
64
- if (!trimmed) {
65
- throw new IssueRunModelOverrideError(`${field.label} cannot be empty; clear the override instead.`);
66
- }
67
- if (field.type === "select") {
68
- const allowed = (field.options ?? []).map((option) => option.value);
69
- if (!allowed.includes(trimmed)) {
70
- throw new IssueRunModelOverrideError(`${field.label} must be one of: ${allowed.join(", ")}.`);
71
- }
72
- return trimmed;
73
- }
74
- if (!FREE_TEXT_FIELD_TYPES[field.type]) {
75
- throw new IssueRunModelOverrideError(`${field.label} cannot be overridden per task.`);
76
- }
77
- return trimmed;
78
- }
79
91
  /** Validates against the adapter's published config schema, not a server-side list. */
80
92
  function validateIssueRunModelOverride(schema, values) {
81
93
  const result = {};
@@ -91,7 +103,18 @@ function validateIssueRunModelOverride(schema, values) {
91
103
  if (!field) {
92
104
  throw new IssueRunModelOverrideError(`This agent's adapter does not expose a "${key}" setting.`);
93
105
  }
94
- result[key] = validateIssueRunModelOverrideValue(field, value);
106
+ try {
107
+ result[key] = validateAdapterConfigFieldValue(field, value, {
108
+ clearHint: "clear the override instead",
109
+ unsupportedReason: "cannot be overridden per task",
110
+ });
111
+ }
112
+ catch (error) {
113
+ if (error instanceof AdapterConfigFieldValueError) {
114
+ throw new IssueRunModelOverrideError(error.message, error.status);
115
+ }
116
+ throw error;
117
+ }
95
118
  }
96
119
  return result;
97
120
  }
@@ -103,7 +126,7 @@ function buildField(key, field, agentConfig, override) {
103
126
  key,
104
127
  label: field.label,
105
128
  hint: field.hint ?? null,
106
- freeText: Boolean(FREE_TEXT_FIELD_TYPES[field.type]),
129
+ freeText: isFreeTextAdapterConfigField(field),
107
130
  options: (field.options ?? [])
108
131
  .filter((option) => option.value.trim())
109
132
  .map((option) => ({
@@ -122,6 +145,8 @@ export async function buildIssueRunModelOverrideView(input) {
122
145
  issueId: input.issueId,
123
146
  agentId: input.assigneeAgent?.id ?? null,
124
147
  adapterType: input.assigneeAgent?.adapterType ?? null,
148
+ inheritance: readIssueRunModelOverrideInheritance(input.assigneeAdapterOverrides),
149
+ propagation: input.propagation ?? null,
125
150
  };
126
151
  if (!input.assigneeAgent) {
127
152
  return {
@@ -168,4 +193,28 @@ export async function resolveIssueRunModelOverrideUpdate(input) {
168
193
  }
169
194
  return validateIssueRunModelOverride(resolved.schema, input.values);
170
195
  }
196
+ /** The override a new child inherits, or `null` when it keeps what it was created with. */
197
+ export function inheritIssueRunModelOverrideForChild(input) {
198
+ const parentInheritance = readIssueRunModelOverrideInheritance(input.parentOverrides);
199
+ if (!parentInheritance.inheritToSubtasks)
200
+ return null;
201
+ const parentValues = readIssueRunModelOverride(input.parentOverrides);
202
+ const childConfig = asRecord(asRecord(input.childOverrides).adapterConfig);
203
+ const values = {};
204
+ for (const key of ISSUE_RUN_MODEL_OVERRIDE_KEYS) {
205
+ if (!parentValues[key])
206
+ continue;
207
+ if (childConfig[key] !== undefined)
208
+ continue;
209
+ values[key] = parentValues[key];
210
+ }
211
+ if (Object.keys(values).length === 0)
212
+ return null;
213
+ return writeIssueRunModelOverride(input.childOverrides, values, {
214
+ inheritToSubtasks: true,
215
+ subtaskScope: parentInheritance.subtaskScope,
216
+ inherited: true,
217
+ sourceIssueId: parentInheritance.sourceIssueId ?? input.parentIssueId,
218
+ });
219
+ }
171
220
  //# sourceMappingURL=issue-run-model-override.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"issue-run-model-override.js","sourceRoot":"","sources":["../../src/services/issue-run-model-override.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issue-run-model-override.js","sourceRoot":"","sources":["../../src/services/issue-run-model-override.ts"],"names":[],"mappings":"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"}