@evoclock/pi-agentic-driver 0.8.1 → 0.8.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evoclock/pi-agentic-driver",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "Guardrail extensions for Agentic Driver: advisory review, bounded Herdr communication, and guarded worker lifecycle.",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-or-later",
@@ -1079,8 +1079,15 @@ export function registerKanbanBoardTools(pi, { resolveBoardPath, boardPath } = {
1079
1079
  async execute(_toolContext, input, _signal, _onUpdate, ctx) {
1080
1080
  // Resolve the board per call from the calling session's working
1081
1081
  // directory. No board here: structured board-unavailable, no write.
1082
- const resolvedBoardPath = (typeof resolveBoardPath === "function" ? resolveBoardPath(ctx?.cwd) : null) ?? boardPath ?? null;
1083
- if (resolvedBoardPath === null || !existsSync(resolvedBoardPath)) {
1082
+ let resolvedBoardPath = (typeof resolveBoardPath === "function" ? resolveBoardPath(ctx?.cwd) : null) ?? boardPath ?? null;
1083
+ // The write tool bootstraps: a MISSING board file is fine (the writer
1084
+ // creates it fresh under the lock). When the resolver finds no board,
1085
+ // fall back to the canonical board.md in the workspace so the writer
1086
+ // can create it.
1087
+ if (resolvedBoardPath === null && typeof ctx?.cwd === "string" && ctx.cwd !== "") {
1088
+ resolvedBoardPath = join(ctx.cwd, "TASKS.md");
1089
+ }
1090
+ if (resolvedBoardPath === null) {
1084
1091
  const value = {
1085
1092
  ok: false,
1086
1093
  persisted: false,
@@ -1138,7 +1145,10 @@ export function registerKanbanBoardTools(pi, { resolveBoardPath, boardPath } = {
1138
1145
  authority: input?.authority,
1139
1146
  registries: {},
1140
1147
  surface: "tasks",
1141
- requireExistingBoard: true,
1148
+ // No requireExistingBoard here: the write tool bootstraps a
1149
+ // fresh board when none exists (§3.4/§5). Recreation is safe —
1150
+ // the writer builds fresh content only, and every card still
1151
+ // requires a genuine authority record.
1142
1152
  });
1143
1153
  } catch (error) {
1144
1154
  const code = typeof error?.code === "string" ? error.code : "writer-error";