threadnote 1.6.0 → 1.6.1
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/dist/threadnote.cjs +3 -33
- package/docs/index.html +37 -8
- package/package.json +1 -1
package/dist/threadnote.cjs
CHANGED
|
@@ -3394,7 +3394,7 @@ var program = new Command();
|
|
|
3394
3394
|
// src/constants.ts
|
|
3395
3395
|
var DEFAULT_HOST = "127.0.0.1";
|
|
3396
3396
|
var DEFAULT_PORT = 1933;
|
|
3397
|
-
var DEFAULT_OPENVIKING_VERSION = "0.4.
|
|
3397
|
+
var DEFAULT_OPENVIKING_VERSION = "0.4.7";
|
|
3398
3398
|
var OPENVIKING_TOOL_PYTHON = "3.12";
|
|
3399
3399
|
var DEFAULT_ACCOUNT = "local";
|
|
3400
3400
|
var DEFAULT_AGENT_ID = "threadnote";
|
|
@@ -13238,8 +13238,6 @@ async function runSeed(config, options) {
|
|
|
13238
13238
|
importPath,
|
|
13239
13239
|
"--to",
|
|
13240
13240
|
candidate.destinationUri,
|
|
13241
|
-
"--reason",
|
|
13242
|
-
seedResourceReason(candidate),
|
|
13243
13241
|
...seedWatchArgs({
|
|
13244
13242
|
watchIntervalMinutes,
|
|
13245
13243
|
importedOriginal: importPath === candidate.filePath,
|
|
@@ -13306,19 +13304,7 @@ async function seedDependencyGraphs(config, ov, manifest, targetProjects, dryRun
|
|
|
13306
13304
|
await ensureDirectory((0, import_node_path13.dirname)(graphPath), false);
|
|
13307
13305
|
await (0, import_promises11.writeFile)(graphPath, document, { encoding: "utf8", mode: 384 });
|
|
13308
13306
|
await (0, import_promises11.chmod)(graphPath, 384);
|
|
13309
|
-
await maybeRun(
|
|
13310
|
-
false,
|
|
13311
|
-
ov,
|
|
13312
|
-
withIdentity(config, [
|
|
13313
|
-
"add-resource",
|
|
13314
|
-
graphPath,
|
|
13315
|
-
"--to",
|
|
13316
|
-
destinationUri,
|
|
13317
|
-
"--reason",
|
|
13318
|
-
`Dependency facts for ${project.name}`,
|
|
13319
|
-
"--wait"
|
|
13320
|
-
])
|
|
13321
|
-
);
|
|
13307
|
+
await maybeRun(false, ov, withIdentity(config, ["add-resource", graphPath, "--to", destinationUri, "--wait"]));
|
|
13322
13308
|
written += 1;
|
|
13323
13309
|
}
|
|
13324
13310
|
console.log(
|
|
@@ -13475,15 +13461,7 @@ async function runSeedSkills(config, options) {
|
|
|
13475
13461
|
console.log(`SKIP command in native skill mode: ${skill.filePath}`);
|
|
13476
13462
|
continue;
|
|
13477
13463
|
}
|
|
13478
|
-
const args = nativeMode ? ["add-skill", skill.filePath, "--wait"] : [
|
|
13479
|
-
"add-resource",
|
|
13480
|
-
skill.filePath,
|
|
13481
|
-
"--to",
|
|
13482
|
-
skillResourceUri(skill),
|
|
13483
|
-
"--reason",
|
|
13484
|
-
skillResourceReason(skill),
|
|
13485
|
-
"--wait"
|
|
13486
|
-
];
|
|
13464
|
+
const args = nativeMode ? ["add-skill", skill.filePath, "--wait"] : ["add-resource", skill.filePath, "--to", skillResourceUri(skill), "--wait"];
|
|
13487
13465
|
await maybeRun(options.dryRun === true, ov, withIdentity(config, args));
|
|
13488
13466
|
}
|
|
13489
13467
|
console.log(
|
|
@@ -13581,17 +13559,9 @@ async function prepareSeedFile(config, candidate, dryRun) {
|
|
|
13581
13559
|
await (0, import_promises11.chmod)(redactedPath, 384);
|
|
13582
13560
|
return redactedPath;
|
|
13583
13561
|
}
|
|
13584
|
-
function seedResourceReason(candidate) {
|
|
13585
|
-
return `Project guidance for ${candidate.projectName}: ${candidate.relativePath}`;
|
|
13586
|
-
}
|
|
13587
13562
|
function graphCacheFileName(projectName) {
|
|
13588
13563
|
return `${uriSegment(projectName)}-${sha256(projectName).slice(0, 8)}.graph.md`;
|
|
13589
13564
|
}
|
|
13590
|
-
function skillResourceReason(skill) {
|
|
13591
|
-
return `${skill.kind === "command" ? "Agent command" : "Agent skill"} catalog item from ${skill.source}: ${(0, import_node_path13.basename)(
|
|
13592
|
-
skill.filePath
|
|
13593
|
-
)}`;
|
|
13594
|
-
}
|
|
13595
13565
|
async function collectSkillCandidates(config) {
|
|
13596
13566
|
const sources = [
|
|
13597
13567
|
{ kind: "skill", pattern: "~/.codex/skills/**/SKILL.md", source: "codex-global" },
|
package/docs/index.html
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
26
26
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
27
27
|
<link
|
|
28
|
-
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap"
|
|
28
|
+
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap"
|
|
29
29
|
rel="stylesheet"
|
|
30
30
|
/>
|
|
31
31
|
|
|
@@ -783,7 +783,7 @@
|
|
|
783
783
|
handoffs, seeded repo docs, reusable skills, and team knowledge.
|
|
784
784
|
</p>
|
|
785
785
|
<div class="cta-row">
|
|
786
|
-
<span class="pill"><span id="version-tag">v1.
|
|
786
|
+
<span class="pill"><span id="version-tag">v1.6.0</span> · local-first · AGPL-3.0-or-later</span>
|
|
787
787
|
</div>
|
|
788
788
|
</div>
|
|
789
789
|
<div class="scroll-cue">scroll ↓ · <span class="kbd">↓</span> / <span class="kbd">j</span></div>
|
|
@@ -1147,7 +1147,7 @@
|
|
|
1147
1147
|
<span class="out">--user`, which fails on PEP 668 setups.</span>
|
|
1148
1148
|
<span class="out">Install uv now? [Y/n] </span><span class="out-strong">Y</span>
|
|
1149
1149
|
<span class="out">Installing uv via Homebrew…</span>
|
|
1150
|
-
<span class="out-strong">OK openviking 0.4.
|
|
1150
|
+
<span class="out-strong">OK openviking 0.4.7 ready · server healthy</span></pre>
|
|
1151
1151
|
</div>
|
|
1152
1152
|
<p class="muted" style="margin-top: 0.75rem; font-size: 0.9rem">
|
|
1153
1153
|
Or manually: <code>npm install -g threadnote && threadnote install</code>. On a fresh macOS / modern
|
|
@@ -1203,7 +1203,7 @@
|
|
|
1203
1203
|
--repo ~/src/mobile-app</span>
|
|
1204
1204
|
<span class="out">Wrote ~/.openviking/seed-manifest.yaml (2 project(s))</span>
|
|
1205
1205
|
|
|
1206
|
-
<span class="cmd">$ threadnote seed</span>
|
|
1206
|
+
<span class="cmd">$ threadnote seed --graph</span>
|
|
1207
1207
|
<span class="out-strong">Imported 47 curated path(s); skipped 6 secret-flagged.</span>
|
|
1208
1208
|
|
|
1209
1209
|
<span class="cmd">$ threadnote seed-skills</span>
|
|
@@ -1228,7 +1228,11 @@ projects:
|
|
|
1228
1228
|
uri: viking://resources/repos/mobile-app
|
|
1229
1229
|
seed:
|
|
1230
1230
|
- AGENTS.md
|
|
1231
|
-
- docs/**/*.md
|
|
1231
|
+
- docs/**/*.md
|
|
1232
|
+
worksets:
|
|
1233
|
+
- name: mobile_web
|
|
1234
|
+
description: Mobile and web app context
|
|
1235
|
+
projects: [web-app, mobile-app]</code></pre>
|
|
1232
1236
|
</div>
|
|
1233
1237
|
</div>
|
|
1234
1238
|
|
|
@@ -1241,6 +1245,14 @@ projects:
|
|
|
1241
1245
|
<strong>Seeding is opt-in and re-runnable.</strong> <code>threadnote seed</code> never deletes; it
|
|
1242
1246
|
upserts.
|
|
1243
1247
|
</li>
|
|
1248
|
+
<li>
|
|
1249
|
+
<strong>Worksets recall related repos together.</strong> Ask for a workset when a task crosses mobile,
|
|
1250
|
+
web, API, or shared-library boundaries.
|
|
1251
|
+
</li>
|
|
1252
|
+
<li>
|
|
1253
|
+
<strong>Dependency facts are searchable.</strong> <code>threadnote seed --graph</code> adds compact
|
|
1254
|
+
package and module facts without indexing source files.
|
|
1255
|
+
</li>
|
|
1244
1256
|
<li>
|
|
1245
1257
|
<strong>Skills are a first-class catalog.</strong> <code>seed-skills</code> makes reusable workflows
|
|
1246
1258
|
discoverable: testing, release, on-call, debugging, plugin guidance.
|
|
@@ -1339,6 +1351,9 @@ threadnote remember \
|
|
|
1339
1351
|
threadnote handoff \
|
|
1340
1352
|
--project web-app --topic auth-token-refresh \
|
|
1341
1353
|
--task "Address reviewer comments on token refresh PR" \
|
|
1354
|
+
--pr "https://github.com/acme/web-app/pull/184" \
|
|
1355
|
+
--ci "lint and auth tests passing" \
|
|
1356
|
+
--reference "viking://user/<you>/memories/durable/projects/web-app/token-client.md" \
|
|
1342
1357
|
--tests "make lint-lite; mocha auth_client_test 77 passing" \
|
|
1343
1358
|
--next-step "Push and request re-review"
|
|
1344
1359
|
|
|
@@ -1553,6 +1568,19 @@ threadnote remember \
|
|
|
1553
1568
|
</div>
|
|
1554
1569
|
</div>
|
|
1555
1570
|
|
|
1571
|
+
<div class="vignette reveal">
|
|
1572
|
+
<div class="v-say">Find the latest mobile and web context for sign-in.</div>
|
|
1573
|
+
<pre class="v-call">recall_context({query: "latest sign-in handoff", workset: "mobile_web"})</pre>
|
|
1574
|
+
<pre class="v-response">
|
|
1575
|
+
→ mobile-app guidance, handoffs, and durable memories
|
|
1576
|
+
→ web-app guidance, handoffs, and durable memories</pre
|
|
1577
|
+
>
|
|
1578
|
+
<div class="v-answer">
|
|
1579
|
+
Worksets let a manifest group related repos once, then recall them together for cross-platform work. A
|
|
1580
|
+
typo fails early instead of silently falling back to broad search.
|
|
1581
|
+
</div>
|
|
1582
|
+
</div>
|
|
1583
|
+
|
|
1556
1584
|
<div class="vignette reveal">
|
|
1557
1585
|
<div class="v-say">Save where we are — I'm switching to another agent.</div>
|
|
1558
1586
|
<pre class="v-call">
|
|
@@ -1591,8 +1619,9 @@ remember_context({kind: "handoff", project: "<repo>", topic: "auto-precomp
|
|
|
1591
1619
|
Stored: viking://user/you/memories/handoffs/active/<repo>/auto-precompact.md</pre
|
|
1592
1620
|
>
|
|
1593
1621
|
<div class="v-answer">
|
|
1594
|
-
Compaction summarizes the conversation arc but loses
|
|
1595
|
-
first; the post-compaction turn recalls them and resumes
|
|
1622
|
+
Compaction summarizes the conversation arc but loses concrete working state. Threadnote's hook captures
|
|
1623
|
+
a scrubbed trace summary and current handoff first; the post-compaction turn recalls them and resumes
|
|
1624
|
+
without amnesia.
|
|
1596
1625
|
</div>
|
|
1597
1626
|
</div>
|
|
1598
1627
|
|
|
@@ -1651,7 +1680,7 @@ threadnote doctor --dry-run</code></pre>
|
|
|
1651
1680
|
</div>
|
|
1652
1681
|
|
|
1653
1682
|
<p class="colophon">
|
|
1654
|
-
threadnote · AGPL-3.0-or-later · built on OpenViking 0.4.
|
|
1683
|
+
threadnote · AGPL-3.0-or-later · built on OpenViking 0.4.7 · use <span class="kbd">↑</span>
|
|
1655
1684
|
<span class="kbd">↓</span> / <span class="kbd">j</span> <span class="kbd">k</span> to navigate
|
|
1656
1685
|
</p>
|
|
1657
1686
|
</div>
|