@interchained/portal-agent 0.1.2 → 0.1.4

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.
@@ -24,6 +24,8 @@ export interface AiAssistConfig {
24
24
  baseUrl?: string;
25
25
  /** Model identifier */
26
26
  model?: string;
27
+ /** Provider to route through — sent as X-AiAssist-Provider header. Defaults to "anthropic" */
28
+ provider?: string;
27
29
  /** Request timeout in ms. Defaults to 60 000 */
28
30
  timeoutMs?: number;
29
31
  }
@@ -32,6 +34,7 @@ export declare class AiAssistClient {
32
34
  private readonly baseUrl;
33
35
  private readonly model;
34
36
  private readonly timeoutMs;
37
+ private readonly provider;
35
38
  constructor(config: AiAssistConfig);
36
39
  /** Single-turn completion — convenience wrapper around chat() */
37
40
  complete(prompt: string, systemPrompt?: string, options?: CompletionOptions): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"aiassist.d.ts","sourceRoot":"","sources":["../src/aiassist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAUD,qBAAa,aAAc,SAAQ,KAAK;aAGpB,UAAU,EAAE,MAAM;aAClB,IAAI,CAAC,EAAE,MAAM;gBAF7B,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,cAAc;IAOlC,iEAAiE;IAC3D,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC;IAOlB,iCAAiC;IAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IA+C7E,kEAAkE;IAClE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc;CAapE"}
1
+ {"version":3,"file":"aiassist.d.ts","sourceRoot":"","sources":["../src/aiassist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAUD,qBAAa,aAAc,SAAQ,KAAK;aAGpB,UAAU,EAAE,MAAM;aAClB,IAAI,CAAC,EAAE,MAAM;gBAF7B,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,EAAE,cAAc;IAQlC,iEAAiE;IAC3D,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC;IAOlB,iCAAiC;IAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgD7E,kEAAkE;IAClE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc;CAapE"}
package/dist/aiassist.js CHANGED
@@ -18,10 +18,12 @@ export class AiAssistClient {
18
18
  baseUrl;
19
19
  model;
20
20
  timeoutMs;
21
+ provider;
21
22
  constructor(config) {
22
23
  this.apiKey = config.apiKey;
23
24
  this.baseUrl = (config.baseUrl ?? "https://api.aiassist.net/v1").replace(/\/$/, "");
24
- this.model = config.model ?? "gpt-4o";
25
+ this.model = config.model ?? "claude-haiku-4-5-20251001";
26
+ this.provider = config.provider ?? "anthropic";
25
27
  this.timeoutMs = config.timeoutMs ?? 60_000;
26
28
  }
27
29
  /** Single-turn completion — convenience wrapper around chat() */
@@ -42,7 +44,8 @@ export class AiAssistClient {
42
44
  method: "POST",
43
45
  headers: {
44
46
  "Content-Type": "application/json",
45
- Authorization: `Bearer ${this.apiKey}`,
47
+ "Authorization": `Bearer ${this.apiKey}`,
48
+ "X-AiAssist-Provider": this.provider,
46
49
  },
47
50
  body: JSON.stringify({
48
51
  model: this.model,
@@ -1 +1 @@
1
- {"version":3,"file":"aiassist.js","sourceRoot":"","sources":["../src/aiassist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aiassist.js","sourceRoot":"","sources":["../src/aiassist.ts"],"names":[],"mappings":"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"}
@@ -22,14 +22,21 @@ export interface GenerateOptions {
22
22
  }
23
23
  export interface GenerateResult {
24
24
  patch: Patch;
25
- /** Set whenever a Sentinel ran (approved or not) */
25
+ /** Set whenever a Sentinel ran */
26
26
  sentinelReview?: SentinelReview;
27
27
  /**
28
- * True when the Sentinel approved and applied the patch to disk.
29
- * False when sentinel rejected, or no sentinel ran.
30
- * The CLI uses this to skip / show the human approval prompt.
28
+ * True when the Sentinel applied the patch (clean or self-corrected).
29
+ * False when no sentinel ran human approval prompt shown instead.
31
30
  */
32
31
  sentinelApplied: boolean;
32
+ /**
33
+ * Populated when the Sentinel had to self-correct the patch before applying.
34
+ * Undefined when the patch was clean.
35
+ */
36
+ sentinelFix?: {
37
+ summary: string;
38
+ changes: string[];
39
+ };
33
40
  }
34
41
  /**
35
42
  * Generate a new page component from a PageContract.
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAe,UAAU,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,cAAc,CAAC,CAsDzB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,eAAe,EACrB,KAAK,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,cAAc,CAAC,CAUzB"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAe,UAAU,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,kCAAkC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACtD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,cAAc,CAAC,CAyDzB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,eAAe,EACrB,KAAK,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,cAAc,CAAC,CAUzB"}
package/dist/generate.js CHANGED
@@ -55,6 +55,9 @@ export async function generatePage(page, opts, store) {
55
55
  patch,
56
56
  sentinelReview: result.review,
57
57
  sentinelApplied: result.applied,
58
+ sentinelFix: result.fix
59
+ ? { summary: result.fix.summary, changes: result.fix.changes }
60
+ : undefined,
58
61
  };
59
62
  }
60
63
  // ── No sentinel — patch stays "pending", human decides ────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAkB,KAAK,cAAc,EAAgB,MAAM,eAAe,CAAC;AAElF,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,cAAc,CAAC;IAC3D,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,YAAiB;IAS/B,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAYlB,sCAAsC;IAChC,iBAAiB,CAAC,IAAI,EAAE;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBnB,sCAAsC;IAChC,WAAW,CAAC,IAAI,EAAE;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBnB,yDAAyD;IACnD,aAAa,CAAC,IAAI,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBpB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAkB,KAAK,cAAc,EAAgB,MAAM,eAAe,CAAC;AAElF,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,cAAc,CAAC;IAC3D,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,YAAiB;IAU/B,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAYlB,sCAAsC;IAChC,iBAAiB,CAAC,IAAI,EAAE;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBnB,sCAAsC;IAChC,WAAW,CAAC,IAAI,EAAE;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBnB,yDAAyD;IACnD,aAAa,CAAC,IAAI,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBpB"}
package/dist/runner.js CHANGED
@@ -10,8 +10,9 @@ export class Runner {
10
10
  this.client = new AiAssistClient({
11
11
  apiKey: config.apiKey ?? process.env["AIASSIST_API_KEY"] ?? process.env["VITE_AIAS_API_KEY"] ?? "",
12
12
  baseUrl: config.baseUrl,
13
- model: config.model ?? "gpt-4o-mini",
14
- timeoutMs: config.timeoutMs ?? 45_000,
13
+ model: config.model ?? "claude-haiku-4-5-20251001",
14
+ provider: "anthropic",
15
+ timeoutMs: config.timeoutMs ?? 60_000,
15
16
  });
16
17
  }
17
18
  async run(task, context, systemPrompt) {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAqC,MAAM,eAAe,CAAC;AAOlF,MAAM,OAAO,MAAM;IACT,MAAM,CAAiB;IAE/B,YAAY,SAAuB,EAAE;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAClG,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa;YACpC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,OAAe,EACf,YAAqB;QAErB,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,GAAG,OAAO,kBAAkB,IAAI,EAAE;SAC5C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,iBAAiB,CAAC,IAQvB;QACC,MAAM,YAAY,GAAG;;;;;YAKb,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,sBAAsB;gBAC7C,IAAI,CAAC,UAAU,IAAI,wBAAwB;wBACnC,CAAC;QAErB,MAAM,MAAM,GAAG,kDAAkD,IAAI,CAAC,KAAK;WACpE,IAAI,CAAC,OAAO;EACrB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;EACjD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;sFACmB,CAAC;QAEnF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,WAAW,CAAC,IAKjB;QACC,MAAM,MAAM,GAAG,+CAA+C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGtF,IAAI,CAAC,QAAQ;;QAEP,IAAI,CAAC,QAAQ;;EAEnB,IAAI,CAAC,OAAO;;;;kIAIoH,CAAC;QAE/H,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,aAAa,CAAC,IAKnB;QACC,MAAM,YAAY,GAAG;gFACuD,CAAC;QAE7E,MAAM,MAAM,GAAG;;SAEV,IAAI,CAAC,OAAO;;;EAGnB,IAAI,CAAC,QAAQ;;QAEP,IAAI,CAAC,QAAQ;;EAEnB,IAAI,CAAC,eAAe;;;oFAG8D,CAAC;QAEjF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5F,CAAC;CACF"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAqC,MAAM,eAAe,CAAC;AAOlF,MAAM,OAAO,MAAM;IACT,MAAM,CAAiB;IAE/B,YAAY,SAAuB,EAAE;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC;YAC/B,MAAM,EAAK,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE;YACrG,OAAO,EAAI,MAAM,CAAC,OAAO;YACzB,KAAK,EAAM,MAAM,CAAC,KAAK,IAAI,2BAA2B;YACtD,QAAQ,EAAG,WAAW;YACtB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,OAAe,EACf,YAAqB;QAErB,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,GAAG,OAAO,kBAAkB,IAAI,EAAE;SAC5C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,iBAAiB,CAAC,IAQvB;QACC,MAAM,YAAY,GAAG;;;;;YAKb,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,sBAAsB;gBAC7C,IAAI,CAAC,UAAU,IAAI,wBAAwB;wBACnC,CAAC;QAErB,MAAM,MAAM,GAAG,kDAAkD,IAAI,CAAC,KAAK;WACpE,IAAI,CAAC,OAAO;EACrB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;EACjD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;sFACmB,CAAC;QAEnF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,WAAW,CAAC,IAKjB;QACC,MAAM,MAAM,GAAG,+CAA+C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGtF,IAAI,CAAC,QAAQ;;QAEP,IAAI,CAAC,QAAQ;;EAEnB,IAAI,CAAC,OAAO;;;;kIAIoH,CAAC;QAE/H,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,aAAa,CAAC,IAKnB;QACC,MAAM,YAAY,GAAG;gFACuD,CAAC;QAE7E,MAAM,MAAM,GAAG;;SAEV,IAAI,CAAC,OAAO;;;EAGnB,IAAI,CAAC,QAAQ;;QAEP,IAAI,CAAC,QAAQ;;EAEnB,IAAI,CAAC,eAAe;;;oFAG8D,CAAC;QAEjF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5F,CAAC;CACF"}
@@ -1,13 +1,15 @@
1
1
  /**
2
- * Sentinel — reviews Runner output and, if approved, applies the patch itself.
2
+ * Sentinel — reviews, auto-corrects, and applies patches.
3
3
  *
4
- * The Sentinel is both the gate and the final patch auditor:
5
- * - APPROVED Sentinel writes the file, marks the patch "applied"
6
- * - REJECTEDSentinel blocks, surfaces violations, human must override
4
+ * The Sentinel never just rejects. Its contract:
5
+ * 1. Review the Runner's output against the app contract
6
+ * 2. If cleanapply as-is
7
+ * 3. If issues → self-correct (call AI to fix the violations)
8
+ * 4. Apply the corrected version
9
+ * 5. Report what was fixed
7
10
  *
8
- * Uses a stronger/slower model than the Runner so it can catch what the
9
- * runner missed: brand violations, hallucinated data, forbidden claims,
10
- * regressions, and contract drift.
11
+ * The human always sees a result, never a gate.
12
+ * The only terminal failure is an unrecoverable AI error.
11
13
  */
12
14
  import { type AiAssistConfig } from "./aiassist.js";
13
15
  import type { AppContract } from "@interchained/portal-contract";
@@ -16,17 +18,29 @@ export interface SentinelReview {
16
18
  approved: boolean;
17
19
  summary: string;
18
20
  violations: string[];
19
- /** Diff-friendly line annotations */
20
21
  annotations: Array<{
21
22
  line?: number;
22
23
  type: "ok" | "warning" | "violation";
23
24
  note: string;
24
25
  }>;
25
26
  }
27
+ export interface SentinelFix {
28
+ /** Plain-English summary of what the sentinel changed */
29
+ summary: string;
30
+ /** Each item is one fix the sentinel applied */
31
+ changes: string[];
32
+ /** The corrected file content */
33
+ correctedContent: string;
34
+ }
26
35
  export interface SentinelResult {
27
36
  review: SentinelReview;
28
- /** True when the Sentinel both approved AND applied the patch to disk */
29
- applied: boolean;
37
+ /** Always true sentinel either applied clean or applied its own fix */
38
+ applied: true;
39
+ /**
40
+ * Populated when the sentinel had to self-correct.
41
+ * Undefined when the patch was clean and applied as-is.
42
+ */
43
+ fix?: SentinelFix;
30
44
  }
31
45
  export declare class Sentinel {
32
46
  private client;
@@ -38,15 +52,20 @@ export declare class Sentinel {
38
52
  proposed: string;
39
53
  agentTask: string;
40
54
  }): Promise<SentinelReview>;
55
+ fix(opts: {
56
+ contract: AppContract;
57
+ filePath: string;
58
+ original: string;
59
+ proposed: string;
60
+ violations: string[];
61
+ agentTask: string;
62
+ }): Promise<SentinelFix>;
41
63
  /**
42
- * Review the patch and, if approved, apply it to disk.
43
- *
44
- * This is the primary entry point. The Sentinel is both judge and executor:
45
- * - Approved → patch is written to disk, status set to "applied"
46
- * - Rejected → nothing is written, violations are surfaced to the caller
64
+ * The primary entry point.
47
65
  *
48
- * Pass `overrideApply: true` to apply even if the Sentinel rejects
49
- * (e.g. explicit human "apply anyway" action in the CLI).
66
+ * Always applies something to disk. Never rejects to the caller.
67
+ * - Clean patch → apply as-is, fix undefined
68
+ * - Dirty patch → self-correct → apply corrected version, fix populated
50
69
  */
51
70
  reviewAndApply(opts: {
52
71
  patch: Patch;
@@ -54,7 +73,6 @@ export declare class Sentinel {
54
73
  store: PatchStore;
55
74
  contract: AppContract;
56
75
  agentTask: string;
57
- overrideApply?: boolean;
58
76
  }): Promise<SentinelResult>;
59
77
  }
60
78
  //# sourceMappingURL=sentinel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sentinel.d.ts","sourceRoot":"","sources":["../src/sentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAc,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qCAAqC;IACrC,WAAW,EAAE,KAAK,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAe1C,MAAM,CAAC,IAAI,EAAE;QACjB,QAAQ,EAAE,WAAW,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,cAAc,CAAC;IAgE3B;;;;;;;;;OASG;IACG,cAAc,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,EAAE,WAAW,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GAAG,OAAO,CAAC,cAAc,CAAC;CA8B5B"}
1
+ {"version":3,"file":"sentinel.d.ts","sourceRoot":"","sources":["../src/sentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAc,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAIrE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,yEAAyE;IACzE,OAAO,EAAE,IAAI,CAAC;IACd;;;OAGG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB;AAID,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAY1C,MAAM,CAAC,IAAI,EAAE;QACjB,QAAQ,EAAE,WAAW,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,cAAc,CAAC;IA0DrB,GAAG,CAAC,IAAI,EAAE;QACd,QAAQ,EAAE,WAAW,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,WAAW,CAAC;IAqDxB;;;;;;OAMG;IACG,cAAc,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,EAAE,WAAW,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,cAAc,CAAC;CA2C5B"}
package/dist/sentinel.js CHANGED
@@ -1,38 +1,38 @@
1
1
  /**
2
- * Sentinel — reviews Runner output and, if approved, applies the patch itself.
2
+ * Sentinel — reviews, auto-corrects, and applies patches.
3
3
  *
4
- * The Sentinel is both the gate and the final patch auditor:
5
- * - APPROVED Sentinel writes the file, marks the patch "applied"
6
- * - REJECTEDSentinel blocks, surfaces violations, human must override
4
+ * The Sentinel never just rejects. Its contract:
5
+ * 1. Review the Runner's output against the app contract
6
+ * 2. If cleanapply as-is
7
+ * 3. If issues → self-correct (call AI to fix the violations)
8
+ * 4. Apply the corrected version
9
+ * 5. Report what was fixed
7
10
  *
8
- * Uses a stronger/slower model than the Runner so it can catch what the
9
- * runner missed: brand violations, hallucinated data, forbidden claims,
10
- * regressions, and contract drift.
11
+ * The human always sees a result, never a gate.
12
+ * The only terminal failure is an unrecoverable AI error.
11
13
  */
12
14
  import { AiAssistClient } from "./aiassist.js";
13
15
  import { applyPatch } from "./patch.js";
16
+ // ── Sentinel ──────────────────────────────────────────────────────────────────
14
17
  export class Sentinel {
15
18
  client;
16
19
  constructor(config = {}) {
17
20
  this.client = new AiAssistClient({
18
- apiKey: config.apiKey ??
19
- process.env["AIASSIST_API_KEY"] ??
20
- process.env["VITE_AIAS_API_KEY"] ??
21
- "",
21
+ apiKey: config.apiKey ?? process.env["AIASSIST_API_KEY"] ?? process.env["VITE_AIAS_API_KEY"] ?? "",
22
22
  baseUrl: config.baseUrl,
23
- model: config.model ?? "gpt-4o",
24
- timeoutMs: config.timeoutMs ?? 90_000,
23
+ model: config.model ?? "claude-opus-4-6",
24
+ provider: "anthropic",
25
+ timeoutMs: config.timeoutMs ?? 120_000,
25
26
  });
26
27
  }
27
- // ── Core review ─────────────────────────────────────────────────────────────
28
+ // ── 1. Review ───────────────────────────────────────────────────────────────
28
29
  async review(opts) {
29
- const contractStr = JSON.stringify(opts.contract, null, 2);
30
30
  const prompt = `You are a code sentinel reviewing an AI-generated patch.
31
- Your job: verify the patch is safe, faithful to the app contract, and actually fixes what it claims.
31
+ Verify the patch is safe, faithful to the app contract, and actually solves the task.
32
32
 
33
33
  App Contract:
34
34
  \`\`\`json
35
- ${contractStr}
35
+ ${JSON.stringify(opts.contract, null, 2)}
36
36
  \`\`\`
37
37
 
38
38
  Agent task: ${opts.agentTask}
@@ -49,53 +49,97 @@ ${opts.proposed}
49
49
  \`\`\`
50
50
 
51
51
  Check for:
52
- 1. Forbidden claims from policies.forbiddenClaims
53
- 2. Forbidden phrases from brand.forbiddenPhrases
54
- 3. Changed brand colors without explicit permission
55
- 4. Hallucinated data (phone numbers, prices, names not in data sources)
56
- 5. Whether the patch faithfully serves the stated goals
57
- 6. Whether it actually fixes the agent task
58
- 7. Any obvious regressions or broken imports
52
+ 1. Forbidden claims (contract.policies.forbiddenClaims)
53
+ 2. Forbidden phrases (contract.brand.forbiddenPhrases)
54
+ 3. Unauthorised brand color changes
55
+ 4. Hallucinated data (numbers, prices, names not in data sources)
56
+ 5. Whether the patch actually solves the task
57
+ 6. Obvious regressions or broken imports
59
58
 
60
- Respond as JSON:
59
+ Respond as JSON only — no markdown fences:
61
60
  {
62
- "approved": true/false,
63
- "summary": "one sentence summary of what the patch does",
64
- "violations": ["list of issues if any — empty array if clean"],
65
- "annotations": [{"line": null, "type": "ok|warning|violation", "note": "..."}]
61
+ "approved": true,
62
+ "summary": "one sentence",
63
+ "violations": [],
64
+ "annotations": []
66
65
  }`;
67
66
  const raw = await this.client.complete(prompt, undefined, {
68
67
  temperature: 0.1,
69
68
  maxTokens: 2_000,
70
69
  });
71
70
  try {
72
- const jsonStr = raw
73
- .replace(/^```json\s*/i, "")
74
- .replace(/\s*```$/, "")
75
- .trim();
76
- return JSON.parse(jsonStr);
71
+ const cleaned = raw.replace(/^```json\s*/i, "").replace(/\s*```$/, "").trim();
72
+ return JSON.parse(cleaned);
77
73
  }
78
74
  catch {
79
75
  return {
80
76
  approved: false,
81
- summary: "Sentinel could not parse its own review — manual review required.",
77
+ summary: "Sentinel could not parse its review — will attempt self-correction.",
82
78
  violations: ["Unparseable sentinel response"],
83
79
  annotations: [],
84
80
  };
85
81
  }
86
82
  }
87
- // ── Gate + apply ─────────────────────────────────────────────────────────────
83
+ // ── 2. Self-correct ─────────────────────────────────────────────────────────
84
+ async fix(opts) {
85
+ const prompt = `You are a code sentinel. An AI agent generated a patch that has the following issues:
86
+
87
+ ${opts.violations.map((v, i) => `${i + 1}. ${v}`).join("\n")}
88
+
89
+ Your job: rewrite the proposed file to fix ALL of these issues while still fulfilling the original task.
90
+ Keep every part of the patch that was correct. Only change what violates the rules.
91
+
92
+ Original task: ${opts.agentTask}
93
+ File: ${opts.filePath}
94
+
95
+ App Contract (source of truth for brand, policies, data):
96
+ \`\`\`json
97
+ ${JSON.stringify(opts.contract, null, 2)}
98
+ \`\`\`
99
+
100
+ ORIGINAL FILE:
101
+ \`\`\`tsx
102
+ ${opts.original}
103
+ \`\`\`
104
+
105
+ PROPOSED (with violations):
106
+ \`\`\`tsx
107
+ ${opts.proposed}
108
+ \`\`\`
109
+
110
+ Respond as JSON only — no markdown fences:
111
+ {
112
+ "correctedContent": "<full corrected file content as a string>",
113
+ "changes": ["Fixed: ...", "Removed: ...", "Replaced: ..."],
114
+ "summary": "one sentence describing what was corrected"
115
+ }`;
116
+ const raw = await this.client.complete(prompt, undefined, {
117
+ temperature: 0.2,
118
+ maxTokens: 8_000,
119
+ });
120
+ try {
121
+ const cleaned = raw.replace(/^```json\s*/i, "").replace(/\s*```$/, "").trim();
122
+ return JSON.parse(cleaned);
123
+ }
124
+ catch {
125
+ // Last resort: return the proposed content unchanged with a note
126
+ return {
127
+ correctedContent: opts.proposed,
128
+ changes: ["Sentinel could not parse its own correction — applied original patch."],
129
+ summary: "Correction parse failed; original patch applied.",
130
+ };
131
+ }
132
+ }
133
+ // ── 3. Review → fix if needed → apply ──────────────────────────────────────
88
134
  /**
89
- * Review the patch and, if approved, apply it to disk.
90
- *
91
- * This is the primary entry point. The Sentinel is both judge and executor:
92
- * - Approved → patch is written to disk, status set to "applied"
93
- * - Rejected → nothing is written, violations are surfaced to the caller
135
+ * The primary entry point.
94
136
  *
95
- * Pass `overrideApply: true` to apply even if the Sentinel rejects
96
- * (e.g. explicit human "apply anyway" action in the CLI).
137
+ * Always applies something to disk. Never rejects to the caller.
138
+ * - Clean patch → apply as-is, fix undefined
139
+ * - Dirty patch → self-correct → apply corrected version, fix populated
97
140
  */
98
141
  async reviewAndApply(opts) {
142
+ // Step 1 — review
99
143
  const review = await this.review({
100
144
  contract: opts.contract,
101
145
  filePath: opts.patch.file,
@@ -103,19 +147,33 @@ Respond as JSON:
103
147
  proposed: opts.patch.proposed,
104
148
  agentTask: opts.agentTask,
105
149
  });
106
- // Persist sentinel verdict onto the patch record
107
150
  await opts.store.update(opts.patch.id, {
108
151
  sentinelApproved: review.approved,
109
152
  sentinelSummary: review.summary,
110
153
  sentinelViolations: review.violations,
111
154
  });
112
- const shouldApply = review.approved || opts.overrideApply;
113
- if (shouldApply) {
114
- await opts.store.update(opts.patch.id, { status: "approved" });
115
- await applyPatch({ ...opts.patch, status: "approved" }, opts.projectRoot, opts.store);
116
- return { review, applied: true };
155
+ // Step 2 self-correct if needed
156
+ let finalContent = opts.patch.proposed;
157
+ let fix;
158
+ if (!review.approved && review.violations.length > 0) {
159
+ fix = await this.fix({
160
+ contract: opts.contract,
161
+ filePath: opts.patch.file,
162
+ original: opts.patch.original,
163
+ proposed: opts.patch.proposed,
164
+ violations: review.violations,
165
+ agentTask: opts.agentTask,
166
+ });
167
+ finalContent = fix.correctedContent;
168
+ await opts.store.update(opts.patch.id, {
169
+ sentinelSummary: fix.summary,
170
+ });
117
171
  }
118
- return { review, applied: false };
172
+ // Step 3 apply (original or corrected)
173
+ const patchToApply = { ...opts.patch, proposed: finalContent, status: "approved" };
174
+ await opts.store.update(opts.patch.id, { status: "approved", proposed: finalContent });
175
+ await applyPatch(patchToApply, opts.projectRoot, opts.store);
176
+ return { review, applied: true, fix };
119
177
  }
120
178
  }
121
179
  //# sourceMappingURL=sentinel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sentinel.js","sourceRoot":"","sources":["../src/sentinel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sentinel.js","sourceRoot":"","sources":["../src/sentinel.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interchained/portal-agent",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Agent runtime for Portal — AiAssist.net runner/sentinel, audit, generate, improve, guard",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "author": "Interchained <dev@interchained.org>",