threadnote 0.7.10 → 0.7.11

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/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  # Threadnote
6
6
 
7
+ [![npm version](https://img.shields.io/npm/v/threadnote.svg)](https://www.npmjs.com/package/threadnote) [![CI](https://img.shields.io/github/actions/workflow/status/Kashkovsky/threadnote/ci.yml?branch=main&label=CI)](https://github.com/Kashkovsky/threadnote/actions/workflows/ci.yml) [![npm downloads](https://img.shields.io/npm/dm/threadnote.svg)](https://www.npmjs.com/package/threadnote) [![license](https://img.shields.io/npm/l/threadnote.svg)](./LICENSE) ![node version](https://img.shields.io/node/v/threadnote.svg)
8
+
7
9
  `threadnote` is a safe local workflow for using [OpenViking](https://openviking.ai/) as shared, agent-neutral context for development work.
8
10
  It is intentionally scoped to curated docs, memories, skills, and handoffs. It is not a source-navigation replacement,
9
11
  and it does not index whole repositories by default.
@@ -36148,7 +36148,6 @@ function exactMemoryScopes(config2, includeArchived) {
36148
36148
  `${userBase}/durable/projects`,
36149
36149
  `${userBase}/handoffs/active`,
36150
36150
  `${userBase}/incidents/active`,
36151
- `${userBase}/events`,
36152
36151
  `${userBase}/shared`,
36153
36152
  `viking://agent/${uriSegment2(config2.agentId)}/memories`,
36154
36153
  // Seeded project resources live outside the user/memories tree. Include
@@ -3868,6 +3868,22 @@ async function gitValue(args, cwd = getInvocationCwd()) {
3868
3868
  }
3869
3869
  return result.stdout.trim();
3870
3870
  }
3871
+ async function resolveRepoName(cwd = getInvocationCwd()) {
3872
+ const repoRoot = await gitValue(["rev-parse", "--show-toplevel"], cwd);
3873
+ if (!repoRoot) {
3874
+ return void 0;
3875
+ }
3876
+ const commonDir = await gitValue(["rev-parse", "--git-common-dir"], repoRoot);
3877
+ if (commonDir) {
3878
+ const absoluteCommonDir = (0, import_node_path.isAbsolute)(commonDir) ? commonDir : (0, import_node_path.resolve)(repoRoot, commonDir);
3879
+ const primaryRoot = (0, import_node_path.basename)(absoluteCommonDir) === ".git" ? (0, import_node_path.dirname)(absoluteCommonDir) : absoluteCommonDir;
3880
+ const name = (0, import_node_path.basename)(primaryRoot).replace(/\.git$/, "");
3881
+ if (name && name !== ".") {
3882
+ return name;
3883
+ }
3884
+ }
3885
+ return (0, import_node_path.basename)(repoRoot);
3886
+ }
3871
3887
  async function runInteractive(executable, args) {
3872
3888
  return new Promise((resolvePromise) => {
3873
3889
  const child = (0, import_node_child_process.spawn)(executable, args, { stdio: "inherit" });
@@ -10012,7 +10028,6 @@ function exactMemoryScopes(config, includeArchived) {
10012
10028
  `${userBase}/durable/projects`,
10013
10029
  `${userBase}/handoffs/active`,
10014
10030
  `${userBase}/incidents/active`,
10015
- `${userBase}/events`,
10016
10031
  `${userBase}/shared`,
10017
10032
  `viking://agent/${uriSegment(config.agentId)}/memories`,
10018
10033
  // Seeded project resources (READMEs, AGENTS.md, SKILL.md, docs/**) live
@@ -10315,7 +10330,7 @@ async function buildHandoff(options) {
10315
10330
  const status = await gitValue(["status", "--short"], repoRoot) ?? "";
10316
10331
  const diffStat = await gitValue(["diff", "--stat", "HEAD"], repoRoot) ?? "";
10317
10332
  const touchedFiles = await gitTouchedFiles(repoRoot);
10318
- const repoName = (0, import_node_path6.basename)(repoRoot);
10333
+ const repoName = await resolveRepoName(repoRoot) ?? (0, import_node_path6.basename)(repoRoot);
10319
10334
  const topicBranch = branch && branch !== "unknown" ? branch : "current";
10320
10335
  const metadata = {
10321
10336
  kind: "handoff",
@@ -10644,8 +10659,7 @@ async function hasManagedClaudeHooks() {
10644
10659
  }
10645
10660
  async function runPreCompactHook(config, options = {}) {
10646
10661
  try {
10647
- const repoRoot = await gitValue(["rev-parse", "--show-toplevel"]);
10648
- const project = repoRoot ? (0, import_node_path9.basename)(repoRoot) : "general";
10662
+ const project = await resolveRepoName() ?? "general";
10649
10663
  await runHandoff(config, {
10650
10664
  blockers: "- none recorded",
10651
10665
  dryRun: options.dryRun === true,
@@ -10665,11 +10679,10 @@ async function runPreCompactHook(config, options = {}) {
10665
10679
  }
10666
10680
  async function runSessionStartHook(config, options = {}) {
10667
10681
  try {
10668
- const repoRoot = await gitValue(["rev-parse", "--show-toplevel"]);
10669
- if (!repoRoot) {
10682
+ const project = await resolveRepoName();
10683
+ if (!project) {
10670
10684
  return;
10671
10685
  }
10672
- const project = (0, import_node_path9.basename)(repoRoot);
10673
10686
  await emitUpdateBannerIfOutdated(config);
10674
10687
  process.stdout.write(`## Threadnote \u2014 latest context for ${project}
10675
10688
 
package/docs/index.html CHANGED
@@ -1415,7 +1415,7 @@ threadnote remember \
1415
1415
  <div class="v-say">Continue where we left off on this branch.</div>
1416
1416
  <pre class="v-call">recall_context({query: "&lt;branch&gt; latest handoff durable feature memory"})</pre>
1417
1417
  <pre class="v-response">
1418
- → viking://user/you/memories/handoffs/active/&lt;branch&gt;/auto-precompact.md
1418
+ → viking://user/you/memories/handoffs/active/&lt;repo&gt;/auto-precompact.md
1419
1419
  → viking://user/you/memories/durable/projects/&lt;repo&gt;/&lt;feature&gt;.md</pre
1420
1420
  >
1421
1421
  <div class="v-answer">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "threadnote",
3
- "version": "0.7.10",
3
+ "version": "0.7.11",
4
4
  "type": "commonjs",
5
5
  "main": "dist/threadnote.cjs",
6
6
  "description": "Shared local context and handoffs for development agents",