@tenonhq/dovetail-core 0.0.123 → 0.0.124
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.
|
@@ -363,7 +363,8 @@ async function initScopesCommand(args) {
|
|
|
363
363
|
Logger_1.logger.warn(failCount + " scope(s) failed — check errors above");
|
|
364
364
|
}
|
|
365
365
|
Logger_1.logger.info("Manifests: dove.manifest.<scope>.json");
|
|
366
|
-
|
|
366
|
+
// Headless next step only — the file watcher is human-only (TenonHQ/Dovetail#155).
|
|
367
|
+
Logger_1.logger.success("Next: edit locally, then 'npx dove push --diff <branch>' to sync the changed files");
|
|
367
368
|
}
|
|
368
369
|
catch (e) {
|
|
369
370
|
Logger_1.logger.error("Error initializing scopes: " + e);
|
|
@@ -375,7 +375,14 @@ async function runInit(options) {
|
|
|
375
375
|
Logger_1.logger.warn(" Setup completed with errors. Review the output above.");
|
|
376
376
|
}
|
|
377
377
|
else {
|
|
378
|
-
|
|
378
|
+
// Headless next steps only — the file watcher is human-only and hidden from
|
|
379
|
+
// Claude-facing output (TenonHQ/Dovetail#155).
|
|
380
|
+
Logger_1.logger.success(chalk_1.default.green(" Setup complete!") +
|
|
381
|
+
" Run " +
|
|
382
|
+
chalk_1.default.cyan("dove status") +
|
|
383
|
+
", then " +
|
|
384
|
+
chalk_1.default.cyan("dove refresh") +
|
|
385
|
+
" to pull the manifest and files.");
|
|
379
386
|
}
|
|
380
387
|
Logger_1.logger.info("");
|
|
381
388
|
}
|
|
@@ -447,7 +454,8 @@ async function runLogin(options) {
|
|
|
447
454
|
Logger_1.logger.info("");
|
|
448
455
|
Logger_1.logger.info("You can now use:");
|
|
449
456
|
Logger_1.logger.info(" dove init — Initialize a new project");
|
|
450
|
-
Logger_1.logger.info(" dove
|
|
457
|
+
Logger_1.logger.info(" dove refresh — Pull the manifest + new files");
|
|
458
|
+
Logger_1.logger.info(" dove push --diff main — Push the files changed vs a branch");
|
|
451
459
|
Logger_1.logger.info(" dove status — Check instance connection");
|
|
452
460
|
Logger_1.logger.info("");
|
|
453
461
|
}
|
|
@@ -4,6 +4,39 @@
|
|
|
4
4
|
// never lists `watch` / `w` / `watchAllScopes`, and all three spellings still
|
|
5
5
|
// route to the watch handler. Mocks mirror commanderStrict.test.ts — the parser
|
|
6
6
|
// is under test, not the commands, which would hit ServiceNow.
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
7
40
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
41
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
42
|
};
|
|
@@ -55,6 +88,8 @@ jest.mock("../clickupCommands", () => ({
|
|
|
55
88
|
clickupListsCommand: jest.fn(),
|
|
56
89
|
}));
|
|
57
90
|
// --- Imports (after mocks) ---
|
|
91
|
+
const fs = __importStar(require("fs"));
|
|
92
|
+
const path = __importStar(require("path"));
|
|
58
93
|
const yargs_1 = __importDefault(require("yargs/yargs"));
|
|
59
94
|
const commander_1 = require("../commander");
|
|
60
95
|
const allScopesCommands_1 = require("../allScopesCommands");
|
|
@@ -144,3 +179,18 @@ describe("dove watch stays wired for humans", function () {
|
|
|
144
179
|
expect(args.port).toBe(4000);
|
|
145
180
|
});
|
|
146
181
|
});
|
|
182
|
+
// The command index is not the only surface Claude reads: `dove init`, `dove login`
|
|
183
|
+
// and `dove initScopes` print next-step hints too. None of them may point at the
|
|
184
|
+
// watcher (#155). Source-level so the check needs no instance and no prompt mocks.
|
|
185
|
+
describe("next-step hints never recommend the watcher", function () {
|
|
186
|
+
const HINT_SOURCES = ["../initSystem/orchestrator.ts", "../allScopesCommands.ts"];
|
|
187
|
+
const USER_FACING_WATCH_HINT = /\blogger\.(info|success|warn)\([^;]*\bdove\b[^;]*\bwatch\b/;
|
|
188
|
+
it.each(HINT_SOURCES)("%s prints only headless next steps", function (rel) {
|
|
189
|
+
const source = fs.readFileSync(path.join(__dirname, rel), "utf8");
|
|
190
|
+
expect(source.length).toBeGreaterThan(0);
|
|
191
|
+
const offenders = source.split("\n").filter(function (line) {
|
|
192
|
+
return USER_FACING_WATCH_HINT.test(line);
|
|
193
|
+
});
|
|
194
|
+
expect(offenders).toEqual([]);
|
|
195
|
+
});
|
|
196
|
+
});
|
package/package.json
CHANGED
package/release-manifest.json
CHANGED
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "dovetail-manifest/v1",
|
|
3
|
-
"generated_at": "2026-10-
|
|
3
|
+
"generated_at": "2026-10-06T16:25:11.503Z",
|
|
4
4
|
"events": [
|
|
5
|
+
{
|
|
6
|
+
"$schema": "dovetail-release-event/v1",
|
|
7
|
+
"event_id": "dovetail-core@0.0.123",
|
|
8
|
+
"package": "@tenonhq/dovetail-core",
|
|
9
|
+
"version": "0.0.123",
|
|
10
|
+
"prev_version": "0.0.122",
|
|
11
|
+
"published_at": "2026-10-06T16:25:11.496Z",
|
|
12
|
+
"git": {
|
|
13
|
+
"sha": "0927c64611ab1901d9ce6b6cbba15cb17eee684e",
|
|
14
|
+
"tag": "dovetail-core@0.0.123"
|
|
15
|
+
},
|
|
16
|
+
"semver_bump": "patch",
|
|
17
|
+
"commits": [
|
|
18
|
+
{
|
|
19
|
+
"sha": "0927c6461",
|
|
20
|
+
"subject": "fix(core): dove create sys_update_set routes through the scope-correct createUpdateSet op (#306)",
|
|
21
|
+
"pr": 306
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"exports_delta": null,
|
|
25
|
+
"narrative": null
|
|
26
|
+
},
|
|
5
27
|
{
|
|
6
28
|
"$schema": "dovetail-release-event/v1",
|
|
7
29
|
"event_id": "dovetail-types@0.0.22",
|
|
@@ -1268,27 +1290,6 @@
|
|
|
1268
1290
|
],
|
|
1269
1291
|
"exports_delta": null,
|
|
1270
1292
|
"narrative": null
|
|
1271
|
-
},
|
|
1272
|
-
{
|
|
1273
|
-
"$schema": "dovetail-release-event/v1",
|
|
1274
|
-
"event_id": "dovetail-mcp@0.0.33",
|
|
1275
|
-
"package": "@tenonhq/dovetail-mcp",
|
|
1276
|
-
"version": "0.0.33",
|
|
1277
|
-
"prev_version": "0.0.32",
|
|
1278
|
-
"published_at": "2026-08-31T21:34:20.896Z",
|
|
1279
|
-
"git": {
|
|
1280
|
-
"sha": "81ab50a4e0fc105445ffc6d6983bc93a1483859d",
|
|
1281
|
-
"tag": "dovetail-mcp@0.0.33"
|
|
1282
|
-
},
|
|
1283
|
-
"semver_bump": "patch",
|
|
1284
|
-
"commits": [
|
|
1285
|
-
{
|
|
1286
|
-
"sha": "025e4eb4d",
|
|
1287
|
-
"subject": "chore(release): publish 2 packages [skip ci]"
|
|
1288
|
-
}
|
|
1289
|
-
],
|
|
1290
|
-
"exports_delta": null,
|
|
1291
|
-
"narrative": null
|
|
1292
1293
|
}
|
|
1293
1294
|
]
|
|
1294
1295
|
}
|