@pi-unipi/kanboard 3.0.0-alpha.22 → 3.0.0-alpha.23

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 (2) hide show
  1. package/package.json +7 -7
  2. package/src/settings.ts +36 -30
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/kanboard",
3
- "version": "3.0.0-alpha.22",
3
+ "version": "3.0.0-alpha.23",
4
4
  "description": "Kanboard v3 — deferred-work board: CLI/daemon bridge, task runner and skill",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "dependencies": {
34
- "@pi-unipi/core": "3.0.0-alpha.22"
34
+ "@pi-unipi/core": "3.0.0-alpha.23"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -48,10 +48,10 @@
48
48
  "themes": []
49
49
  },
50
50
  "optionalDependencies": {
51
- "@pi-unipi/kanboard-linux-x64": "3.0.0-alpha.22",
52
- "@pi-unipi/kanboard-linux-arm64": "3.0.0-alpha.22",
53
- "@pi-unipi/kanboard-darwin-x64": "3.0.0-alpha.22",
54
- "@pi-unipi/kanboard-darwin-arm64": "3.0.0-alpha.22",
55
- "@pi-unipi/kanboard-win32-x64": "3.0.0-alpha.22"
51
+ "@pi-unipi/kanboard-linux-x64": "3.0.0-alpha.23",
52
+ "@pi-unipi/kanboard-linux-arm64": "3.0.0-alpha.23",
53
+ "@pi-unipi/kanboard-darwin-x64": "3.0.0-alpha.23",
54
+ "@pi-unipi/kanboard-darwin-arm64": "3.0.0-alpha.23",
55
+ "@pi-unipi/kanboard-win32-x64": "3.0.0-alpha.23"
56
56
  }
57
57
  }
package/src/settings.ts CHANGED
@@ -34,9 +34,6 @@ export interface KanboardSettings {
34
34
  doTasks: number;
35
35
  /** Board writes a /unipi:kanboard-do grants. */
36
36
  doWrites: number;
37
- /** Whether a blocked-by-confusion task may ask the user (ask) or must
38
- * assume-and-note (avoid, the default). */
39
- blocking: "avoid" | "ask";
40
37
  /** Progress reminders when the agent works board tasks by hand: `start`
41
38
  * before the first edit, `finish` (or block) before the turn ends. */
42
39
  reminders: boolean;
@@ -56,7 +53,6 @@ export const DEFAULT_SETTINGS: KanboardSettings = {
56
53
  turnAddLimit: 20,
57
54
  doTasks: 5,
58
55
  doWrites: 10,
59
- blocking: "avoid",
60
56
  reminders: true,
61
57
  };
62
58
 
@@ -74,54 +70,65 @@ export function registerKanboardSettings(): void {
74
70
  defaults: { ...DEFAULT_SETTINGS } as unknown as Record<string, unknown>,
75
71
  schema: [
76
72
  {
77
- title: "Kanboard",
78
- description: "The session's work board: daemon, -do budgets and skill",
73
+ title: "Agent",
74
+ description: "Task flow and budgets for sessions working the board",
79
75
  fields: [
80
76
  {
81
77
  key: "chainGate",
82
78
  type: "enum",
83
79
  label: "Chain gate",
80
+ description: "When a dependency counts as satisfied and the next task may start.",
84
81
  options: [
85
- { value: "in_review", label: "in_review (next task starts when this one is reviewed)" },
86
- { value: "done", label: "done (next task waits for a completed dependency)" },
82
+ { value: "in_review", label: "in review", description: "next task may start once this one is in review" },
83
+ { value: "done", label: "done", description: "next task waits for a completed dependency" },
87
84
  ],
88
- description: "When a dependency counts as satisfied for the next task",
89
85
  },
90
- { key: "idleMin", type: "number", label: "Daemon idle minutes", min: 1, description: "Shut the daemon down after this long with no board open" },
86
+ { key: "maxSessions", type: "number", label: "Max sessions", min: 1, description: "Distinct sessions that may hold in_progress tasks, per project." },
87
+ { key: "turnAddLimit", type: "number", label: "Adds per turn", min: 0, zeroLabel: "unlimited", description: "`add` calls one turn may make." },
88
+ { key: "reminders", type: "boolean", label: "Progress reminders", description: "Remind the agent to `start` a mentioned task before editing; text only, off in child sessions." },
89
+ { key: "doTasks", type: "number", label: "-do task slots", min: 0, zeroLabel: "off", description: "Task slots a /unipi:kanboard-do grants; each `start` uses one." },
90
+ { key: "doWrites", type: "number", label: "-do write budget", min: 0, zeroLabel: "off", description: "Board writes a /unipi:kanboard-do grants (add, edit, link, order, move, notes)." },
91
+ ],
92
+ },
93
+ {
94
+ title: "Housekeeping",
95
+ description: "What happens to finished and cancelled tasks",
96
+ fields: [
97
+ { key: "archiveAfterDays", type: "number", label: "Archive after", unit: "days", min: 0, zeroLabel: "off", description: "Auto-archive done/cancelled tasks on session start." },
98
+ { key: "retentionDays", type: "number", label: "Cold storage after", unit: "days", min: 0, zeroLabel: "off", description: "Move archived tasks to cold storage — readable files, gone from the board." },
99
+ ],
100
+ },
101
+ {
102
+ title: "Board server",
103
+ description: "Daemon binding, lifetime and access token",
104
+ advanced: true,
105
+ fields: [
91
106
  {
92
107
  key: "host",
93
108
  type: "string",
94
109
  label: "Bind address",
95
110
  emptyLabel: "127.0.0.1 (local only)",
96
111
  hint: "127.0.0.1 · 0.0.0.0 (LAN, token-gated) · tailscale (tailnet IP)",
97
- description: "Anything but a loopback address requires an access token",
112
+ description: "Address the board server binds; anything but a loopback requires the access token.",
98
113
  },
99
- { key: "port", type: "number", label: "Daemon port", min: 0, max: 65535, zeroLabel: "auto", description: "0 lets the OS pick a free port" },
100
- { key: "archiveAfterDays", type: "number", label: "Archive after (days)", min: 0, zeroLabel: "off", description: "Auto-archive done/cancelled tasks on session start" },
101
- { key: "retentionDays", type: "number", label: "Cold storage after (days)", min: 0, zeroLabel: "off", description: "Move archived/cancelled tasks to cold storage — files stay readable, the board drops them" },
102
- { key: "openBrowser", type: "boolean", label: "Open the browser", description: "Open the board in a browser when /unipi:kanboard opens it" },
114
+ { key: "port", type: "number", label: "Daemon port", min: 0, max: 65535, zeroLabel: "auto", description: "Port the board server listens on; 0 lets the OS pick a free one." },
115
+ { key: "idleMin", type: "number", label: "Daemon idle", unit: "min", min: 1, description: "Shut the daemon down after this long with no board open." },
116
+ { key: "openBrowser", type: "boolean", label: "Open browser", description: "Open the board in a browser when /unipi:kanboard opens it." },
103
117
  {
104
118
  key: "requireAuth",
105
119
  type: "boolean",
106
- label: "Require the access token on localhost too",
107
- description: "Remote binds always need the token; this adds it for 127.0.0.1. Applies on the next daemon start.",
120
+ label: "Token on localhost",
121
+ description: "Require the access token on 127.0.0.1 too; remote binds always need it. Next daemon start.",
108
122
  },
109
123
  {
110
124
  key: "keepToken",
111
125
  type: "boolean",
112
- label: "Keep the access token across restarts",
113
- description: "Reuse one token so board links stay valid; rotate it below.",
114
- },
115
- { key: "maxSessions", type: "number", label: "Sessions working at once (per project)", min: 1, description: "Distinct sessions holding in_progress tasks" },
116
- { key: "turnAddLimit", type: "number", label: "New tasks per turn", min: 0, zeroLabel: "unlimited", description: "`add` calls allowed per turn" },
117
- {
118
- key: "reminders",
119
- type: "boolean",
120
- label: "Progress reminders",
121
- description: "Remind the agent to `start` a mentioned Todo task before editing (text only, never blocks; off in child sessions)",
126
+ label: "Keep token",
127
+ description: "Reuse <home>/token across restarts so board links stay valid; rotate below.",
122
128
  },
123
- { key: "doTasks", type: "number", label: "-do task slots", min: 0, zeroLabel: "off", description: "Task slots a /unipi:kanboard-do grants; each `start` uses one" },
124
- { key: "doWrites", type: "number", label: "-do write budget", min: 0, zeroLabel: "off", description: "Board writes a /unipi:kanboard-do grants (add, edit, link, order, move, note on tasks you don't hold)" },
129
+ { key: "open", type: "action", label: "Open board…", description: "Start the daemon and open the board.", command: ACTION_OPEN },
130
+ { key: "stopDaemon", type: "action", label: "Stop daemon…", description: "Shut the board server down now.", command: ACTION_STOP_DAEMON },
131
+ { key: "rotateToken", type: "action", label: "Rotate access token…", description: "Issue a new token; old board links stop working.", command: ACTION_ROTATE_TOKEN },
125
132
  ],
126
133
  },
127
134
  ],
@@ -153,7 +160,6 @@ export function readKanboardSettings(cwd: string = process.cwd()): KanboardSetti
153
160
  typeof raw.doWrites === "number" && raw.doWrites >= 0 && storedDoWritesSet(cwd)
154
161
  ? raw.doWrites
155
162
  : (storedLegacyDoCredits(cwd) ?? DEFAULT_SETTINGS.doWrites),
156
- blocking: raw.blocking === "ask" ? "ask" : "avoid",
157
163
  reminders: raw.reminders !== false,
158
164
  };
159
165
  }