rootr-cli 0.10.0 → 0.13.0

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/lib/mcp.js CHANGED
@@ -10,6 +10,7 @@ import { registerDatabaseTools } from './mcp-tools/databases.js';
10
10
  import { registerTemplateTools } from './mcp-tools/templates.js';
11
11
  import { registerWebhookTools } from './mcp-tools/webhooks.js';
12
12
  import { registerMiscTools } from './mcp-tools/misc.js';
13
+ import { registerPublicTools } from './mcp-tools/public.js';
13
14
  import { registerCrmTools } from './mcp-tools/crm.js';
14
15
  import { registerPresentationTools } from './mcp-tools/presentations.js';
15
16
  import { registerSpreadsheetTools } from './mcp-tools/spreadsheets.js';
@@ -18,6 +19,7 @@ import { registerFormTools } from './mcp-tools/forms.js';
18
19
  import { registerRecordingTools } from './mcp-tools/recordings.js';
19
20
  import { registerAttachmentTools } from './mcp-tools/attachments.js';
20
21
  import { registerSignedDocTools } from './mcp-tools/signed.js';
22
+ import { registerFeedbackTools } from './mcp-tools/feedback.js';
21
23
  import { withRateLimitSink } from './context.js';
22
24
 
23
25
  /** Warn once the workspace has burned this share of its quota. */
@@ -65,7 +67,7 @@ function withQuotaWarnings(server) {
65
67
  * Builds a fully-configured McpServer (all tool groups registered) without
66
68
  * connecting a transport. Shared by the local stdio CLI server below and by
67
69
  * the backend's hosted Streamable HTTP transport (src/mcp/mcp-transport.controller.ts),
68
- * so the 134 tool definitions have exactly one implementation.
70
+ * so the 151 tool definitions have exactly one implementation.
69
71
  */
70
72
  export function buildMcpServer({ name, version }) {
71
73
  const server = new McpServer(
@@ -123,11 +125,38 @@ export function buildMcpServer({ name, version }) {
123
125
  'rootr_request_signing_code first and ASK THE HUMAN for the 6 digits that arrive in their mail — ' +
124
126
  'that code is the only evidence a person (not an agent) pressed sign; ' +
125
127
  'FOLDER = grouping; LOG store = typed event table whose relation fields auto-build a lineage graph (metrics, incidents, pipeline events — use the rootr_*_log_* tools).\n\n' +
126
- 'Scaffolding discipline: ALWAYS rootr_scaffold_plan first, ask the user the 3-10 clarifying questions it ' +
127
- 'prescribes, and only then design and create the tree — every answer must visibly shape the structure. ' +
128
+ 'Scaffolding discipline — treat "set up a workspace for X" exactly like "build me this app": you ask a ' +
129
+ 'few clarifying questions, write it, compile it, run the tests, leave a README, and report. The user ' +
130
+ 'should only have to type that one sentence; everything else finishes inside the conversation. Never ask ' +
131
+ 'and then stop. The loop is plan → ask → design → review → fix → apply → manual → test, and skipping a step is ' +
132
+ 'how a workspace ends up as a pile of thin markdown files: (1) rootr_scaffold_plan on the raw intent — it ' +
133
+ 'hands back the METHOD, never a template or a domain skeleton (there are none, deliberately): ' +
134
+ 'analyzeFirst, designRules, buildingBlocks, questionPolicy, loop; ' +
135
+ '(2) work out how the job ACTUALLY runs using the `analyzeFirst` questions it returns — the daily and ' +
136
+ 'weekly rhythm, what piles up, what has stages, what comes in from outside, where money is added up, ' +
137
+ 'what causes an accident if it is late, and above all what is unique to THIS job and would be missing ' +
138
+ 'from a generic template; (3) ask the user the 3-10 clarifying questions you generated — every answer ' +
139
+ 'must visibly shape the structure; (4) design the tree FROM SCRATCH with `designRules`; (5) rootr_scaffold_review ' +
140
+ 'and fix every `error` finding, then review again; (6) apply; (7) write the HOW-TO-USE manual as a ' +
141
+ 'DOCUMENT in the tree — the daily/weekly/monthly routine naming the actual tables and views, how the ' +
142
+ 'tables link to each other, where form answers land, and what the OWNER still has to fill in (the ' +
143
+ 'assumptions you made because you could not ask, the example rows to replace, the notification address ' +
144
+ 'only they can decide); (8) rootr_test_workspace — the unit-test step: it RUNS what you built and catches ' +
145
+ 'what no review can (relations pointing at rows that do not exist, rollups/formulas that yield nothing, ' +
146
+ 'views referencing gone columns, form questions with no matching column so answers vanish silently, sheet ' +
147
+ 'formulas left uncomputed or at #REF!); fix every fail and run it again; (9) rootr_review_workspace to ' +
148
+ 'grade the shape of what really got built. Both reviews can say 100 while the thing is broken — only ' +
149
+ 'step 8 catches that. ' +
150
+ 'A workspace without a manual is a pile of empty grids. ' +
128
151
  'If your runtime can receive HTTP callbacks, offer to close the loop after scaffolding: register a webhook ' +
129
152
  'scoped to the new tree (rootr_create_webhook) so changes flow back to you — and ALWAYS skip deliveries ' +
130
- 'whose actorId is your own key, or you will trigger yourself in an infinite loop.',
153
+ 'whose actorId is your own key, or you will trigger yourself in an infinite loop.\n\n' +
154
+ 'Telling us when something is wrong: if a tool errors unexpectedly, does not do what its ' +
155
+ 'description says, forces you into a workaround, or the user complains that Rootr is broken or ' +
156
+ 'confusing, call rootr_send_feedback — on your own, without being asked and without asking ' +
157
+ 'permission — and then carry on with the task. Once per distinct problem, never in a retry loop. ' +
158
+ 'It is free, never spends credits, never counts against the daily limit, and works even when ' +
159
+ 'your key or quota does not. Nobody else is going to report it.',
131
160
  },
132
161
  );
133
162
 
@@ -142,6 +171,7 @@ export function buildMcpServer({ name, version }) {
142
171
  registerDatabaseTools(server);
143
172
  registerWebhookTools(server);
144
173
  registerMiscTools(server);
174
+ registerPublicTools(server);
145
175
  registerCrmTools(server);
146
176
  registerPresentationTools(server);
147
177
  registerSpreadsheetTools(server);
@@ -150,6 +180,7 @@ export function buildMcpServer({ name, version }) {
150
180
  registerRecordingTools(server);
151
181
  registerAttachmentTools(server);
152
182
  registerSignedDocTools(server);
183
+ registerFeedbackTools(server);
153
184
 
154
185
  return server;
155
186
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rootr-cli",
3
- "version": "0.10.0",
3
+ "version": "0.13.0",
4
4
  "description": "Official Rootr CLI + MCP server — read, write, edit and search Rootr documents from the shell or from an AI agent.",
5
5
  "type": "module",
6
6
  "bin": {