@autonav/core 1.5.0 → 1.7.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.
Files changed (238) hide show
  1. package/README.md +2 -2
  2. package/dist/adapter/index.d.ts +3 -3
  3. package/dist/adapter/index.d.ts.map +1 -1
  4. package/dist/adapter/index.js +3 -3
  5. package/dist/adapter/index.js.map +1 -1
  6. package/dist/adapter/navigator-adapter.d.ts +196 -0
  7. package/dist/adapter/navigator-adapter.d.ts.map +1 -0
  8. package/dist/adapter/navigator-adapter.js +579 -0
  9. package/dist/adapter/navigator-adapter.js.map +1 -0
  10. package/dist/cli/autonav.d.ts +2 -5
  11. package/dist/cli/autonav.d.ts.map +1 -1
  12. package/dist/cli/autonav.js +35 -49
  13. package/dist/cli/autonav.js.map +1 -1
  14. package/dist/cli/nav-chat.d.ts +2 -1
  15. package/dist/cli/nav-chat.d.ts.map +1 -1
  16. package/dist/cli/nav-chat.js +32 -3
  17. package/dist/cli/nav-chat.js.map +1 -1
  18. package/dist/cli/nav-init.d.ts +2 -1
  19. package/dist/cli/nav-init.d.ts.map +1 -1
  20. package/dist/cli/nav-init.js +12 -4
  21. package/dist/cli/nav-init.js.map +1 -1
  22. package/dist/cli/nav-install.d.ts +2 -1
  23. package/dist/cli/nav-install.d.ts.map +1 -1
  24. package/dist/cli/nav-install.js +4 -2
  25. package/dist/cli/nav-install.js.map +1 -1
  26. package/dist/cli/nav-memento.d.ts +21 -0
  27. package/dist/cli/nav-memento.d.ts.map +1 -0
  28. package/dist/cli/nav-memento.js +185 -0
  29. package/dist/cli/nav-memento.js.map +1 -0
  30. package/dist/cli/nav-mend.d.ts +2 -1
  31. package/dist/cli/nav-mend.d.ts.map +1 -1
  32. package/dist/cli/nav-mend.js +4 -1
  33. package/dist/cli/nav-mend.js.map +1 -1
  34. package/dist/cli/nav-migrate.d.ts +2 -1
  35. package/dist/cli/nav-migrate.d.ts.map +1 -1
  36. package/dist/cli/nav-migrate.js +2 -6
  37. package/dist/cli/nav-migrate.js.map +1 -1
  38. package/dist/cli/nav-query.d.ts +2 -1
  39. package/dist/cli/nav-query.d.ts.map +1 -1
  40. package/dist/cli/nav-query.js +12 -6
  41. package/dist/cli/nav-query.js.map +1 -1
  42. package/dist/cli/nav-standup.d.ts +18 -0
  43. package/dist/cli/nav-standup.d.ts.map +1 -0
  44. package/dist/cli/nav-standup.js +151 -0
  45. package/dist/cli/nav-standup.js.map +1 -0
  46. package/dist/cli/nav-uninstall.d.ts +2 -1
  47. package/dist/cli/nav-uninstall.d.ts.map +1 -1
  48. package/dist/cli/nav-uninstall.js +4 -2
  49. package/dist/cli/nav-uninstall.js.map +1 -1
  50. package/dist/cli/nav-update.d.ts +2 -1
  51. package/dist/cli/nav-update.d.ts.map +1 -1
  52. package/dist/cli/nav-update.js +11 -6
  53. package/dist/cli/nav-update.js.map +1 -1
  54. package/dist/conversation/App.d.ts +9 -2
  55. package/dist/conversation/App.d.ts.map +1 -1
  56. package/dist/conversation/App.js +304 -111
  57. package/dist/conversation/App.js.map +1 -1
  58. package/dist/conversation/index.d.ts +5 -0
  59. package/dist/conversation/index.d.ts.map +1 -1
  60. package/dist/conversation/index.js +17 -2
  61. package/dist/conversation/index.js.map +1 -1
  62. package/dist/harness/chibi-harness.d.ts +36 -0
  63. package/dist/harness/chibi-harness.d.ts.map +1 -0
  64. package/dist/harness/chibi-harness.js +383 -0
  65. package/dist/harness/chibi-harness.js.map +1 -0
  66. package/dist/harness/chibi-plugins/get_plugin_config +64 -0
  67. package/dist/harness/chibi-plugins/query_navigator +114 -0
  68. package/dist/harness/chibi-plugins/submit_answer +38 -0
  69. package/dist/harness/chibi-plugins/update_plugin_config +91 -0
  70. package/dist/harness/claude-code-harness.d.ts +24 -0
  71. package/dist/harness/claude-code-harness.d.ts.map +1 -0
  72. package/dist/harness/claude-code-harness.js +242 -0
  73. package/dist/harness/claude-code-harness.js.map +1 -0
  74. package/dist/harness/ephemeral-home.d.ts +34 -0
  75. package/dist/harness/ephemeral-home.d.ts.map +1 -0
  76. package/dist/harness/ephemeral-home.js +56 -0
  77. package/dist/harness/ephemeral-home.js.map +1 -0
  78. package/dist/harness/factory.d.ts +47 -0
  79. package/dist/harness/factory.d.ts.map +1 -0
  80. package/dist/harness/factory.js +84 -0
  81. package/dist/harness/factory.js.map +1 -0
  82. package/dist/harness/helpers.d.ts +58 -0
  83. package/dist/harness/helpers.d.ts.map +1 -0
  84. package/dist/harness/helpers.js +78 -0
  85. package/dist/harness/helpers.js.map +1 -0
  86. package/dist/harness/index.d.ts +14 -0
  87. package/dist/harness/index.d.ts.map +1 -0
  88. package/dist/harness/index.js +13 -0
  89. package/dist/harness/index.js.map +1 -0
  90. package/dist/harness/opencode-harness.d.ts +79 -0
  91. package/dist/harness/opencode-harness.d.ts.map +1 -0
  92. package/dist/harness/opencode-harness.js +537 -0
  93. package/dist/harness/opencode-harness.js.map +1 -0
  94. package/dist/harness/opencode-tools/get_plugin_config.ts +72 -0
  95. package/dist/harness/opencode-tools/query_navigator.ts +126 -0
  96. package/dist/harness/opencode-tools/submit_answer.ts +40 -0
  97. package/dist/harness/opencode-tools/update_plugin_config.ts +105 -0
  98. package/dist/harness/sandbox.d.ts +59 -0
  99. package/dist/harness/sandbox.d.ts.map +1 -0
  100. package/dist/harness/sandbox.js +152 -0
  101. package/dist/harness/sandbox.js.map +1 -0
  102. package/dist/harness/tool-server.d.ts +50 -0
  103. package/dist/harness/tool-server.d.ts.map +1 -0
  104. package/dist/harness/tool-server.js +27 -0
  105. package/dist/harness/tool-server.js.map +1 -0
  106. package/dist/harness/types.d.ts +168 -0
  107. package/dist/harness/types.d.ts.map +1 -0
  108. package/dist/harness/types.js +12 -0
  109. package/dist/harness/types.js.map +1 -0
  110. package/dist/index.d.ts +3 -2
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +4 -2
  113. package/dist/index.js.map +1 -1
  114. package/dist/interview/App.d.ts +4 -2
  115. package/dist/interview/App.d.ts.map +1 -1
  116. package/dist/interview/App.js +36 -56
  117. package/dist/interview/App.js.map +1 -1
  118. package/dist/interview/index.d.ts +3 -0
  119. package/dist/interview/index.d.ts.map +1 -1
  120. package/dist/interview/index.js +1 -0
  121. package/dist/interview/index.js.map +1 -1
  122. package/dist/interview/prompts.d.ts +3 -1
  123. package/dist/interview/prompts.d.ts.map +1 -1
  124. package/dist/interview/prompts.js +5 -1
  125. package/dist/interview/prompts.js.map +1 -1
  126. package/dist/interview/ui/ChatBanner.d.ts +17 -0
  127. package/dist/interview/ui/ChatBanner.d.ts.map +1 -0
  128. package/dist/interview/ui/ChatBanner.js +30 -0
  129. package/dist/interview/ui/ChatBanner.js.map +1 -0
  130. package/dist/interview/ui/ChatInput.d.ts +36 -0
  131. package/dist/interview/ui/ChatInput.d.ts.map +1 -0
  132. package/dist/interview/ui/ChatInput.js +304 -0
  133. package/dist/interview/ui/ChatInput.js.map +1 -0
  134. package/dist/interview/ui/MarkdownText.d.ts +13 -0
  135. package/dist/interview/ui/MarkdownText.d.ts.map +1 -0
  136. package/dist/interview/ui/MarkdownText.js +107 -0
  137. package/dist/interview/ui/MarkdownText.js.map +1 -0
  138. package/dist/interview/ui/index.d.ts +3 -0
  139. package/dist/interview/ui/index.d.ts.map +1 -1
  140. package/dist/interview/ui/index.js +3 -0
  141. package/dist/interview/ui/index.js.map +1 -1
  142. package/dist/memento/git-operations.d.ts +95 -0
  143. package/dist/memento/git-operations.d.ts.map +1 -0
  144. package/dist/memento/git-operations.js +256 -0
  145. package/dist/memento/git-operations.js.map +1 -0
  146. package/dist/memento/implementer-agent.d.ts +31 -0
  147. package/dist/memento/implementer-agent.d.ts.map +1 -0
  148. package/dist/memento/implementer-agent.js +95 -0
  149. package/dist/memento/implementer-agent.js.map +1 -0
  150. package/dist/memento/index.d.ts +32 -0
  151. package/dist/memento/index.d.ts.map +1 -0
  152. package/dist/memento/index.js +40 -0
  153. package/dist/memento/index.js.map +1 -0
  154. package/dist/memento/loop.d.ts +34 -0
  155. package/dist/memento/loop.d.ts.map +1 -0
  156. package/dist/memento/loop.js +1227 -0
  157. package/dist/memento/loop.js.map +1 -0
  158. package/dist/memento/matrix-animation.d.ts +103 -0
  159. package/dist/memento/matrix-animation.d.ts.map +1 -0
  160. package/dist/memento/matrix-animation.js +303 -0
  161. package/dist/memento/matrix-animation.js.map +1 -0
  162. package/dist/memento/nav-protocol.d.ts +30 -0
  163. package/dist/memento/nav-protocol.d.ts.map +1 -0
  164. package/dist/memento/nav-protocol.js +75 -0
  165. package/dist/memento/nav-protocol.js.map +1 -0
  166. package/dist/memento/prompts.d.ts +57 -0
  167. package/dist/memento/prompts.d.ts.map +1 -0
  168. package/dist/memento/prompts.js +208 -0
  169. package/dist/memento/prompts.js.map +1 -0
  170. package/dist/memento/rate-limit.d.ts +85 -0
  171. package/dist/memento/rate-limit.d.ts.map +1 -0
  172. package/dist/memento/rate-limit.js +221 -0
  173. package/dist/memento/rate-limit.js.map +1 -0
  174. package/dist/memento/types.d.ts +123 -0
  175. package/dist/memento/types.d.ts.map +1 -0
  176. package/dist/memento/types.js +30 -0
  177. package/dist/memento/types.js.map +1 -0
  178. package/dist/memento/worker-agent.d.ts +33 -0
  179. package/dist/memento/worker-agent.d.ts.map +1 -0
  180. package/dist/memento/worker-agent.js +93 -0
  181. package/dist/memento/worker-agent.js.map +1 -0
  182. package/dist/registry.d.ts +35 -0
  183. package/dist/registry.d.ts.map +1 -0
  184. package/dist/registry.js +87 -0
  185. package/dist/registry.js.map +1 -0
  186. package/dist/repo-analyzer/index.d.ts +2 -1
  187. package/dist/repo-analyzer/index.d.ts.map +1 -1
  188. package/dist/repo-analyzer/index.js +6 -17
  189. package/dist/repo-analyzer/index.js.map +1 -1
  190. package/dist/standup/config.d.ts +19 -0
  191. package/dist/standup/config.d.ts.map +1 -0
  192. package/dist/standup/config.js +42 -0
  193. package/dist/standup/config.js.map +1 -0
  194. package/dist/standup/index.d.ts +24 -0
  195. package/dist/standup/index.d.ts.map +1 -0
  196. package/dist/standup/index.js +29 -0
  197. package/dist/standup/index.js.map +1 -0
  198. package/dist/standup/loop.d.ts +36 -0
  199. package/dist/standup/loop.d.ts.map +1 -0
  200. package/dist/standup/loop.js +508 -0
  201. package/dist/standup/loop.js.map +1 -0
  202. package/dist/standup/prompts.d.ts +62 -0
  203. package/dist/standup/prompts.d.ts.map +1 -0
  204. package/dist/standup/prompts.js +211 -0
  205. package/dist/standup/prompts.js.map +1 -0
  206. package/dist/standup/standup-protocol.d.ts +33 -0
  207. package/dist/standup/standup-protocol.d.ts.map +1 -0
  208. package/dist/standup/standup-protocol.js +189 -0
  209. package/dist/standup/standup-protocol.js.map +1 -0
  210. package/dist/standup/types.d.ts +185 -0
  211. package/dist/standup/types.d.ts.map +1 -0
  212. package/dist/standup/types.js +67 -0
  213. package/dist/standup/types.js.map +1 -0
  214. package/dist/tools/cross-nav.d.ts +21 -0
  215. package/dist/tools/cross-nav.d.ts.map +1 -0
  216. package/dist/tools/cross-nav.js +93 -0
  217. package/dist/tools/cross-nav.js.map +1 -0
  218. package/dist/tools/index.d.ts +1 -0
  219. package/dist/tools/index.d.ts.map +1 -1
  220. package/dist/tools/index.js +1 -0
  221. package/dist/tools/index.js.map +1 -1
  222. package/dist/tools/related-navs-config.d.ts +15 -0
  223. package/dist/tools/related-navs-config.d.ts.map +1 -0
  224. package/dist/tools/related-navs-config.js +132 -0
  225. package/dist/tools/related-navs-config.js.map +1 -0
  226. package/dist/tools/related-navs.d.ts +23 -0
  227. package/dist/tools/related-navs.d.ts.map +1 -0
  228. package/dist/tools/related-navs.js +107 -0
  229. package/dist/tools/related-navs.js.map +1 -0
  230. package/dist/tools/response.d.ts +3 -2
  231. package/dist/tools/response.d.ts.map +1 -1
  232. package/dist/tools/response.js +7 -11
  233. package/dist/tools/response.js.map +1 -1
  234. package/dist/tools/self-config.d.ts +2 -1
  235. package/dist/tools/self-config.d.ts.map +1 -1
  236. package/dist/tools/self-config.js +5 -9
  237. package/dist/tools/self-config.js.map +1 -1
  238. package/package.json +4 -1
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Standup Loop Core Logic
3
+ *
4
+ * Orchestrates multi-navigator standups in two phases:
5
+ * 1. Parallel report: All navs simultaneously scan their knowledge and report status
6
+ * 2. Sequential sync: Each nav reviews all reports and resolves blockers
7
+ */
8
+ import type { StandupOptions, StandupResult } from "./types.js";
9
+ import type { Harness } from "../harness/index.js";
10
+ import { type NavigatorIdentity } from "./prompts.js";
11
+ /**
12
+ * Loaded navigator info
13
+ */
14
+ interface LoadedNav {
15
+ directory: string;
16
+ name: string;
17
+ description: string;
18
+ systemPrompt: string;
19
+ knowledgeBasePath: string;
20
+ identity: NavigatorIdentity;
21
+ workingDirectories: string[];
22
+ /** Per-operation sandbox profile from config.json */
23
+ sandboxEnabled: boolean;
24
+ /** Navigator-level allowed tools from config.json */
25
+ navAllowedTools?: string[];
26
+ }
27
+ /**
28
+ * Load a navigator for standup participation
29
+ */
30
+ export declare function loadNavForStandup(dir: string): LoadedNav;
31
+ /**
32
+ * Run a full multi-navigator standup
33
+ */
34
+ export declare function runStandup(navDirs: string[], options: StandupOptions | undefined, harness: Harness): Promise<StandupResult>;
35
+ export {};
36
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/standup/loop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAGd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AAM/D,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAUtB;;GAEG;AACH,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,qDAAqD;IACrD,cAAc,EAAE,OAAO,CAAC;IACxB,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAYD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CA4DxD;AAiRD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,cAAc,YAAK,EAC5B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,CAmIxB"}
@@ -0,0 +1,508 @@
1
+ /**
2
+ * Standup Loop Core Logic
3
+ *
4
+ * Orchestrates multi-navigator standups in two phases:
5
+ * 1. Parallel report: All navs simultaneously scan their knowledge and report status
6
+ * 2. Sequential sync: Each nav reviews all reports and resolves blockers
7
+ */
8
+ import * as fs from "node:fs";
9
+ import * as path from "node:path";
10
+ import * as os from "node:os";
11
+ import chalk from "chalk";
12
+ import { resolveConfigDir, createStandupDir } from "./config.js";
13
+ import { createReportProtocolTools, createSyncProtocolTools, } from "./standup-protocol.js";
14
+ import { buildReportSystemPrompt, buildReportPrompt, buildSyncSystemPrompt, buildSyncPrompt, } from "./prompts.js";
15
+ const DEBUG = process.env.AUTONAV_DEBUG === "1" || process.env.DEBUG === "1";
16
+ function debug(...args) {
17
+ if (DEBUG) {
18
+ console.log(chalk.dim("[debug]"), ...args);
19
+ }
20
+ }
21
+ /**
22
+ * Expand ~ to home directory and resolve relative paths from a base
23
+ */
24
+ function resolveNavPath(rawPath, baseDir) {
25
+ if (rawPath.startsWith("~")) {
26
+ return path.resolve(rawPath.replace(/^~/, os.homedir()));
27
+ }
28
+ return path.resolve(baseDir, rawPath);
29
+ }
30
+ /**
31
+ * Load a navigator for standup participation
32
+ */
33
+ export function loadNavForStandup(dir) {
34
+ const directory = path.resolve(dir);
35
+ if (!fs.existsSync(directory)) {
36
+ throw new Error(`Navigator directory not found: ${directory}`);
37
+ }
38
+ const claudeMdPath = path.join(directory, "CLAUDE.md");
39
+ if (!fs.existsSync(claudeMdPath)) {
40
+ throw new Error(`Navigator CLAUDE.md not found: ${claudeMdPath}`);
41
+ }
42
+ const systemPrompt = fs.readFileSync(claudeMdPath, "utf-8");
43
+ // Load config.json for identity
44
+ const configPath = path.join(directory, "config.json");
45
+ let name = path.basename(directory);
46
+ let description = "";
47
+ let knowledgeBasePath = path.join(directory, "knowledge");
48
+ let workingDirectories = [];
49
+ let sandboxEnabled = true; // standup defaults to sandbox enabled
50
+ let navAllowedTools;
51
+ if (fs.existsSync(configPath)) {
52
+ try {
53
+ const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
54
+ if (config.name)
55
+ name = config.name;
56
+ if (config.description)
57
+ description = config.description;
58
+ if (config.knowledgeBasePath) {
59
+ knowledgeBasePath = path.resolve(directory, config.knowledgeBasePath);
60
+ }
61
+ if (Array.isArray(config.workingDirectories)) {
62
+ workingDirectories = config.workingDirectories.map((p) => resolveNavPath(p, directory));
63
+ }
64
+ // Read per-operation sandbox profile (standup defaults to enabled)
65
+ if (config.sandbox?.standup?.enabled === false) {
66
+ sandboxEnabled = false;
67
+ }
68
+ // Read navigator-level allowed tools
69
+ if (Array.isArray(config.sandbox?.allowedTools)) {
70
+ navAllowedTools = config.sandbox.allowedTools;
71
+ }
72
+ }
73
+ catch {
74
+ // Use defaults on parse error
75
+ }
76
+ }
77
+ return {
78
+ directory,
79
+ name,
80
+ description,
81
+ systemPrompt,
82
+ knowledgeBasePath,
83
+ identity: { name, description },
84
+ workingDirectories,
85
+ sandboxEnabled,
86
+ navAllowedTools,
87
+ };
88
+ }
89
+ /**
90
+ * Run the report phase for a single navigator
91
+ */
92
+ async function runReportPhase(nav, otherNavNames, standupDir, options, harness) {
93
+ const { model = "claude-sonnet-4-5", maxTurns = 15, maxBudgetUsd, verbose = false, } = options;
94
+ const protocol = createReportProtocolTools();
95
+ const { server } = harness.createToolServer("autonav-standup-report", protocol.tools);
96
+ const systemPrompt = buildReportSystemPrompt(nav.systemPrompt);
97
+ const prompt = buildReportPrompt({
98
+ navDirectory: nav.directory,
99
+ knowledgeBasePath: nav.knowledgeBasePath,
100
+ otherNavigators: otherNavNames,
101
+ }, nav.identity);
102
+ if (verbose) {
103
+ console.log(`[Report] Querying ${nav.name}...`);
104
+ }
105
+ const agentConfig = {
106
+ model,
107
+ maxTurns,
108
+ systemPrompt,
109
+ cwd: nav.directory,
110
+ additionalDirectories: [...nav.workingDirectories, standupDir],
111
+ permissionMode: "acceptEdits",
112
+ allowedTools: [
113
+ ...new Set([
114
+ "Read", "Glob", "Grep", "Bash",
115
+ "mcp__autonav-standup-report__submit_status_report",
116
+ ...(nav.navAllowedTools ?? []),
117
+ ]),
118
+ ],
119
+ mcpServers: {
120
+ "autonav-standup-report": server,
121
+ },
122
+ ...(maxBudgetUsd !== undefined ? { maxBudgetUsd } : {}),
123
+ // Per-nav sandbox: report phase is read-only
124
+ ...(nav.sandboxEnabled ? {
125
+ sandbox: {
126
+ readPaths: [nav.directory, nav.knowledgeBasePath, ...nav.workingDirectories],
127
+ },
128
+ } : {}),
129
+ };
130
+ debug(`[Report:${nav.name}] Agent config:`, JSON.stringify({
131
+ model: agentConfig.model,
132
+ maxTurns: agentConfig.maxTurns,
133
+ cwd: agentConfig.cwd,
134
+ additionalDirectories: agentConfig.additionalDirectories,
135
+ permissionMode: agentConfig.permissionMode,
136
+ mcpServers: Object.keys(agentConfig.mcpServers),
137
+ maxBudgetUsd: agentConfig.maxBudgetUsd,
138
+ }, null, 2));
139
+ const session = harness.run(agentConfig, prompt);
140
+ let resultEvent;
141
+ for await (const event of session) {
142
+ if (event.type === "tool_use") {
143
+ const shortToolName = event.name.split("__").pop() || event.name;
144
+ if (verbose) {
145
+ console.log(`[Report:${nav.name}] Tool: ${shortToolName}`);
146
+ }
147
+ debug(`[Report:${nav.name}] Full tool name: ${event.name}`);
148
+ }
149
+ if (event.type === "tool_result") {
150
+ if (event.isError) {
151
+ debug(`[Report:${nav.name}] Tool ERROR result:`, event.content.substring(0, 500));
152
+ }
153
+ else if (DEBUG) {
154
+ debug(`[Report:${nav.name}] Tool result:`, event.content.substring(0, 300));
155
+ }
156
+ }
157
+ if (event.type === "result") {
158
+ resultEvent = event;
159
+ }
160
+ }
161
+ if (!resultEvent) {
162
+ throw new Error(`${nav.name}: No result message received`);
163
+ }
164
+ debug(`[Report:${nav.name}] Result: success=${resultEvent.success}`);
165
+ debug(`[Report:${nav.name}] Turns: ${resultEvent.numTurns}, Cost: $${resultEvent.costUsd?.toFixed(4)}`);
166
+ debug(`[Report:${nav.name}] Captured report: ${protocol.getCapturedReport() ? "YES" : "NO"}`);
167
+ if (!resultEvent.success) {
168
+ debug(`[Report:${nav.name}] Error:`, resultEvent.text);
169
+ }
170
+ const costUsd = resultEvent.costUsd ?? 0;
171
+ // Approximate context utilization from input tokens (assume 200k context window)
172
+ const contextPercent = resultEvent.usage
173
+ ? (resultEvent.usage.inputTokens / 200_000) * 100
174
+ : 0;
175
+ if (!resultEvent.success) {
176
+ throw new Error(`${nav.name} report failed: ${resultEvent.text || "Unknown error"}`);
177
+ }
178
+ const report = protocol.getCapturedReport();
179
+ if (!report) {
180
+ throw new Error(`${nav.name} did not submit a status report. Navigator must use the submit_status_report tool.`);
181
+ }
182
+ // Write report to file
183
+ const reportPath = path.join(standupDir, "reports", `${nav.name}.md`);
184
+ fs.writeFileSync(reportPath, formatReportMarkdown(report), "utf-8");
185
+ if (verbose) {
186
+ console.log(`[Report:${nav.name}] Complete - ${report.blockers.length} blocker(s), context: ${contextPercent.toFixed(1)}%`);
187
+ }
188
+ return { report, costUsd, contextPercent };
189
+ }
190
+ /**
191
+ * Run the sync phase for a single navigator
192
+ */
193
+ async function runSyncPhase(nav, allReports, previousSyncResponses, standupDir, otherNavNames, options, harness) {
194
+ const { model = "claude-sonnet-4-5", maxTurns = 30, maxBudgetUsd, verbose = false, } = options;
195
+ const protocol = createSyncProtocolTools();
196
+ const { server } = harness.createToolServer("autonav-standup-sync", protocol.tools);
197
+ const systemPrompt = buildSyncSystemPrompt(nav.systemPrompt);
198
+ const prompt = buildSyncPrompt({
199
+ navDirectory: nav.directory,
200
+ knowledgeBasePath: nav.knowledgeBasePath,
201
+ standupDir,
202
+ allReports,
203
+ previousSyncResponses,
204
+ otherNavigators: otherNavNames,
205
+ }, nav.identity);
206
+ if (verbose) {
207
+ console.log(`[Sync] Querying ${nav.name}...`);
208
+ }
209
+ const agentConfig = {
210
+ model,
211
+ maxTurns,
212
+ systemPrompt,
213
+ cwd: nav.directory,
214
+ additionalDirectories: [...nav.workingDirectories, standupDir],
215
+ permissionMode: "acceptEdits",
216
+ allowedTools: [
217
+ ...new Set([
218
+ "Read", "Write", "Edit", "Glob", "Grep", "Bash",
219
+ "mcp__autonav-standup-sync__submit_sync_response",
220
+ ...(nav.navAllowedTools ?? []),
221
+ ]),
222
+ ],
223
+ mcpServers: {
224
+ "autonav-standup-sync": server,
225
+ },
226
+ ...(maxBudgetUsd !== undefined ? { maxBudgetUsd } : {}),
227
+ // Per-nav sandbox: sync phase needs write access
228
+ ...(nav.sandboxEnabled ? {
229
+ sandbox: {
230
+ writePaths: [nav.directory, nav.knowledgeBasePath, standupDir],
231
+ readPaths: [...nav.workingDirectories],
232
+ },
233
+ } : {}),
234
+ };
235
+ debug(`[Sync:${nav.name}] Agent config:`, JSON.stringify({
236
+ model: agentConfig.model,
237
+ maxTurns: agentConfig.maxTurns,
238
+ cwd: agentConfig.cwd,
239
+ additionalDirectories: agentConfig.additionalDirectories,
240
+ permissionMode: agentConfig.permissionMode,
241
+ mcpServers: Object.keys(agentConfig.mcpServers),
242
+ maxBudgetUsd: agentConfig.maxBudgetUsd,
243
+ }, null, 2));
244
+ const session = harness.run(agentConfig, prompt);
245
+ let resultEvent;
246
+ for await (const event of session) {
247
+ if (event.type === "tool_use") {
248
+ const shortToolName = event.name.split("__").pop() || event.name;
249
+ if (verbose) {
250
+ console.log(`[Sync:${nav.name}] Tool: ${shortToolName}`);
251
+ }
252
+ debug(`[Sync:${nav.name}] Full tool name: ${event.name}`);
253
+ }
254
+ if (event.type === "result") {
255
+ resultEvent = event;
256
+ }
257
+ }
258
+ if (!resultEvent) {
259
+ throw new Error(`${nav.name}: No result message received during sync`);
260
+ }
261
+ debug(`[Sync:${nav.name}] Result: success=${resultEvent.success}`);
262
+ debug(`[Sync:${nav.name}] Turns: ${resultEvent.numTurns}, Cost: $${resultEvent.costUsd?.toFixed(4)}`);
263
+ debug(`[Sync:${nav.name}] Captured sync: ${protocol.getCapturedSync() ? "YES" : "NO"}`);
264
+ if (!resultEvent.success) {
265
+ debug(`[Sync:${nav.name}] Error:`, resultEvent.text);
266
+ }
267
+ const costUsd = resultEvent.costUsd ?? 0;
268
+ // Approximate context utilization from input tokens (assume 200k context window)
269
+ const contextPercent = resultEvent.usage
270
+ ? (resultEvent.usage.inputTokens / 200_000) * 100
271
+ : 0;
272
+ if (!resultEvent.success) {
273
+ throw new Error(`${nav.name} sync failed: ${resultEvent.text || "Unknown error"}`);
274
+ }
275
+ const sync = protocol.getCapturedSync();
276
+ if (!sync) {
277
+ throw new Error(`${nav.name} did not submit a sync response. Navigator must use the submit_sync_response tool.`);
278
+ }
279
+ // Write sync response to file
280
+ const syncPath = path.join(standupDir, "sync", `${nav.name}-sync.md`);
281
+ fs.writeFileSync(syncPath, formatSyncMarkdown(sync), "utf-8");
282
+ if (verbose) {
283
+ console.log(`[Sync:${nav.name}] Complete - ${sync.blockerResolutions.length} resolution(s), context: ${contextPercent.toFixed(1)}%`);
284
+ }
285
+ return { sync, costUsd, contextPercent };
286
+ }
287
+ /**
288
+ * Run a full multi-navigator standup
289
+ */
290
+ export async function runStandup(navDirs, options = {}, harness) {
291
+ const startTime = Date.now();
292
+ const { verbose = false, reportOnly = false } = options;
293
+ // Resolve config and create standup directory
294
+ const configDir = resolveConfigDir(options.configDir);
295
+ const standupDir = createStandupDir(configDir);
296
+ if (verbose) {
297
+ console.log(`[Standup] Config dir: ${configDir}`);
298
+ console.log(`[Standup] Standup dir: ${standupDir}`);
299
+ }
300
+ // Load all navigators
301
+ const navs = navDirs.map((dir) => loadNavForStandup(dir));
302
+ const navNames = navs.map((n) => n.name);
303
+ const errors = [];
304
+ let totalCostUsd = 0;
305
+ const contextUtilization = {};
306
+ // === Phase 1: Parallel Report ===
307
+ console.log(chalk.bold.blue("\n--- Phase 1: Status Reports ---\n"));
308
+ const reportResults = await Promise.allSettled(navs.map((nav) => {
309
+ const otherNames = navNames.filter((n) => n !== nav.name);
310
+ return runReportPhase(nav, otherNames, standupDir, options, harness);
311
+ }));
312
+ const reports = [];
313
+ for (let i = 0; i < reportResults.length; i++) {
314
+ const result = reportResults[i];
315
+ const nav = navs[i];
316
+ if (result.status === "fulfilled") {
317
+ const { report, costUsd, contextPercent } = result.value;
318
+ reports.push(report);
319
+ totalCostUsd += costUsd;
320
+ contextUtilization[`${nav.name} (report)`] = contextPercent;
321
+ console.log(` ${chalk.green("+")} ${chalk.bold(nav.name)} - ` +
322
+ `${report.blockers.length} blocker(s), ` +
323
+ `context: ${chalk.cyan(contextPercent.toFixed(1) + "%")}, ` +
324
+ `cost: ${chalk.yellow("$" + costUsd.toFixed(4))}`);
325
+ }
326
+ else {
327
+ const reason = result.reason;
328
+ const errorMsg = `${nav.name} report failed: ${reason instanceof Error ? reason.message : String(reason)}`;
329
+ errors.push(errorMsg);
330
+ console.log(` ${chalk.red("x")} ${chalk.bold(nav.name)} - ${chalk.red("FAILED")}`);
331
+ if (verbose) {
332
+ console.log(` ${chalk.dim(errorMsg)}`);
333
+ }
334
+ }
335
+ }
336
+ // Count total blockers
337
+ const totalBlockers = reports.reduce((sum, r) => sum + r.blockers.length, 0);
338
+ // === Phase 2: Sequential Sync ===
339
+ const syncResponses = [];
340
+ if (reportOnly) {
341
+ console.log(chalk.dim("\n Sync phase skipped (--report-only)\n"));
342
+ }
343
+ else if (totalBlockers === 0) {
344
+ console.log(chalk.dim("\n No blockers reported - sync phase skipped\n"));
345
+ }
346
+ else {
347
+ console.log(chalk.bold.blue(`\n--- Phase 2: Sync (${totalBlockers} blocker(s) to resolve) ---\n`));
348
+ for (const nav of navs) {
349
+ const otherNames = navNames.filter((n) => n !== nav.name);
350
+ try {
351
+ const result = await runSyncPhase(nav, reports, syncResponses, // accumulating - each nav sees previous syncs
352
+ standupDir, otherNames, options, harness);
353
+ syncResponses.push(result.sync);
354
+ totalCostUsd += result.costUsd;
355
+ contextUtilization[`${nav.name} (sync)`] = result.contextPercent;
356
+ console.log(` ${chalk.green("+")} ${chalk.bold(nav.name)} - ` +
357
+ `${result.sync.blockerResolutions.length} resolution(s), ` +
358
+ `context: ${chalk.cyan(result.contextPercent.toFixed(1) + "%")}, ` +
359
+ `cost: ${chalk.yellow("$" + result.costUsd.toFixed(4))}`);
360
+ }
361
+ catch (error) {
362
+ const errorMsg = `${nav.name} sync failed: ${error instanceof Error ? error.message : String(error)}`;
363
+ errors.push(errorMsg);
364
+ console.log(` ${chalk.red("x")} ${chalk.bold(nav.name)} - ${chalk.red("FAILED")}`);
365
+ if (verbose) {
366
+ console.log(` ${chalk.dim(errorMsg)}`);
367
+ }
368
+ }
369
+ }
370
+ }
371
+ // Generate summary
372
+ const summaryPath = path.join(standupDir, "summary.md");
373
+ fs.writeFileSync(summaryPath, formatSummaryMarkdown(reports, syncResponses, totalCostUsd, Date.now() - startTime), "utf-8");
374
+ const durationMs = Date.now() - startTime;
375
+ return {
376
+ success: errors.length === 0,
377
+ standupDir,
378
+ reports,
379
+ syncResponses,
380
+ durationMs,
381
+ totalCostUsd,
382
+ contextUtilization,
383
+ errors: errors.length > 0 ? errors : undefined,
384
+ };
385
+ }
386
+ // === Markdown Formatters ===
387
+ /**
388
+ * Format a status report as a markdown file
389
+ */
390
+ function formatReportMarkdown(report) {
391
+ const blockersList = report.blockers.length > 0
392
+ ? report.blockers
393
+ .map((b) => `- **[${b.severity}]** ${b.description}${b.needsFrom ? ` _(needs: ${b.needsFrom})_` : ""}`)
394
+ .join("\n")
395
+ : "_No blockers_";
396
+ const canHelpList = report.canHelpWith.length > 0
397
+ ? report.canHelpWith.map((h) => `- ${h}`).join("\n")
398
+ : "_Nothing specific_";
399
+ const gapsSection = report.knowledgeGaps && report.knowledgeGaps.length > 0
400
+ ? `\n## Knowledge Gaps\n\n${report.knowledgeGaps.map((g) => `- ${g}`).join("\n")}\n`
401
+ : "";
402
+ return `# Status Report: ${report.navigatorName}
403
+
404
+ ## Current Focus
405
+
406
+ ${report.currentFocus}
407
+
408
+ ## Recent Progress
409
+
410
+ ${report.recentProgress.map((p) => `- ${p}`).join("\n")}
411
+
412
+ ## Blockers
413
+
414
+ ${blockersList}
415
+
416
+ ## Can Help With
417
+
418
+ ${canHelpList}
419
+ ${gapsSection}`;
420
+ }
421
+ /**
422
+ * Format a sync response as a markdown file
423
+ */
424
+ function formatSyncMarkdown(sync) {
425
+ const resolutions = sync.blockerResolutions.length > 0
426
+ ? sync.blockerResolutions
427
+ .map((r) => `### For ${r.navigatorName}\n\n` +
428
+ `**Blocker:** ${r.blockerDescription}\n\n` +
429
+ `**Resolution:** ${r.resolution}\n\n` +
430
+ `**Confidence:** ${r.confidence}` +
431
+ (r.artifactPath ? `\n\n**Artifact:** ${r.artifactPath}` : ""))
432
+ .join("\n\n---\n\n")
433
+ : "_No blocker resolutions provided_";
434
+ const insights = sync.newInsights && sync.newInsights.length > 0
435
+ ? `\n## New Insights\n\n${sync.newInsights.map((i) => `- ${i}`).join("\n")}\n`
436
+ : "";
437
+ return `# Sync Response: ${sync.navigatorName}
438
+
439
+ ## Summary
440
+
441
+ ${sync.summary}
442
+
443
+ ## Blocker Resolutions
444
+
445
+ ${resolutions}
446
+ ${insights}
447
+ ## Follow-up Needed
448
+
449
+ ${sync.followUpNeeded ? "Yes - further coordination recommended" : "No - all addressed"}
450
+ `;
451
+ }
452
+ /**
453
+ * Format the summary markdown combining all reports and sync responses
454
+ */
455
+ function formatSummaryMarkdown(reports, syncResponses, totalCostUsd, durationMs) {
456
+ const participants = reports.map((r) => r.navigatorName).join(", ");
457
+ // Count blockers and resolutions
458
+ const totalBlockers = reports.reduce((sum, r) => sum + r.blockers.length, 0);
459
+ const totalResolutions = syncResponses.reduce((sum, s) => sum + s.blockerResolutions.length, 0);
460
+ const followUpNeeded = syncResponses.some((s) => s.followUpNeeded);
461
+ // Format duration
462
+ const durationStr = durationMs < 60000
463
+ ? `${(durationMs / 1000).toFixed(1)}s`
464
+ : `${Math.floor(durationMs / 60000)}m ${Math.floor((durationMs % 60000) / 1000)}s`;
465
+ // Build blocker summary
466
+ let blockerSummary = "";
467
+ if (totalBlockers > 0) {
468
+ blockerSummary = "\n## Blockers\n\n";
469
+ for (const report of reports) {
470
+ for (const blocker of report.blockers) {
471
+ // Check if resolved
472
+ const resolution = syncResponses
473
+ .flatMap((s) => s.blockerResolutions)
474
+ .find((r) => r.navigatorName === report.navigatorName &&
475
+ r.blockerDescription === blocker.description);
476
+ const status = resolution
477
+ ? `RESOLVED [${resolution.confidence}]`
478
+ : "UNRESOLVED";
479
+ blockerSummary +=
480
+ `- **${report.navigatorName}**: ${blocker.description} [${blocker.severity}] - **${status}**\n`;
481
+ }
482
+ }
483
+ }
484
+ return `# Standup Summary
485
+
486
+ **Date:** ${new Date().toISOString().split("T")[0]}
487
+ **Participants:** ${participants}
488
+ **Duration:** ${durationStr}
489
+ **Total Cost:** $${totalCostUsd.toFixed(4)}
490
+
491
+ ## Overview
492
+
493
+ - **Reports:** ${reports.length}
494
+ - **Blockers reported:** ${totalBlockers}
495
+ - **Resolutions provided:** ${totalResolutions}
496
+ - **Follow-up needed:** ${followUpNeeded ? "Yes" : "No"}
497
+ ${blockerSummary}
498
+ ## Reports
499
+
500
+ ${reports.map((r) => `### ${r.navigatorName}\n\n**Focus:** ${r.currentFocus}\n\n**Progress:**\n${r.recentProgress.map((p) => `- ${p}`).join("\n")}`).join("\n\n")}
501
+
502
+ ${syncResponses.length > 0 ? `## Sync Contributions\n\n${syncResponses.map((s) => `### ${s.navigatorName}\n\n${s.summary}`).join("\n\n")}` : ""}
503
+
504
+ ---
505
+ _Generated by autonav standup_
506
+ `;
507
+ }
508
+ //# sourceMappingURL=loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/standup/loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Prompts for Standup Mode
3
+ *
4
+ * System prompts and user prompts for the report and sync phases.
5
+ * Uses shared Agent Identity Protocol from communication-layer.
6
+ *
7
+ * Prompt engineering principles applied:
8
+ * - XML tags separate data from instructions (Anthropic best practice)
9
+ * - System prompts define role/constraints; user prompts define task/data (no duplication)
10
+ * - Guided chain-of-thought before tool submission
11
+ * - Explicit context: what output is used for, who reads it, where it fits in workflow
12
+ * - Minimize noise: no redundant instructions between system and user prompts
13
+ */
14
+ import { type NavigatorIdentity } from "@autonav/communication-layer";
15
+ import type { StatusReport, SyncResponse } from "./types.js";
16
+ export type { NavigatorIdentity };
17
+ /**
18
+ * Context passed to report phase prompts
19
+ */
20
+ interface ReportPromptContext {
21
+ navDirectory: string;
22
+ knowledgeBasePath: string;
23
+ otherNavigators: string[];
24
+ }
25
+ /**
26
+ * Context passed to sync phase prompts
27
+ */
28
+ interface SyncPromptContext {
29
+ navDirectory: string;
30
+ knowledgeBasePath: string;
31
+ standupDir: string;
32
+ allReports: StatusReport[];
33
+ previousSyncResponses: SyncResponse[];
34
+ otherNavigators: string[];
35
+ }
36
+ /**
37
+ * Build the system prompt for a navigator in the report phase.
38
+ *
39
+ * Role definition + behavioral constraints only.
40
+ * Task-specific instructions live in the user prompt to avoid duplication.
41
+ */
42
+ export declare function buildReportSystemPrompt(navSystemPrompt: string): string;
43
+ /**
44
+ * Build the user prompt for the report phase.
45
+ *
46
+ * Provides task context, data via XML tags, and guided chain-of-thought.
47
+ */
48
+ export declare function buildReportPrompt(context: ReportPromptContext, identity: NavigatorIdentity | null): string;
49
+ /**
50
+ * Build the system prompt for a navigator in the sync phase.
51
+ *
52
+ * Role definition + behavioral constraints only.
53
+ */
54
+ export declare function buildSyncSystemPrompt(navSystemPrompt: string): string;
55
+ /**
56
+ * Build the user prompt for the sync phase.
57
+ *
58
+ * Data sections use XML tags for clean separation.
59
+ * Includes guided chain-of-thought for blocker prioritization.
60
+ */
61
+ export declare function buildSyncPrompt(context: SyncPromptContext, identity: NavigatorIdentity | null): string;
62
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/standup/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG7D,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC;;GAEG;AACH,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,qBAAqB,EAAE,YAAY,EAAE,CAAC;IACtC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAiBvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GACjC,MAAM,CAuCR;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAkBrE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GACjC,MAAM,CAsDR"}