@arvoretech/hub 0.20.0 → 0.22.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.
@@ -117,7 +117,7 @@ async function checkAndAutoRegenerate(hubDir) {
117
117
  return;
118
118
  }
119
119
  console.log(chalk.yellow("\n Detected outdated configs, auto-regenerating..."));
120
- const { generators: generators2 } = await import("./generate-J6FNJF7F.js");
120
+ const { generators: generators2 } = await import("./generate-3KUUBRXF.js");
121
121
  const generator = generators2[result.editor];
122
122
  if (!generator) {
123
123
  console.log(chalk.red(` Unknown editor '${result.editor}' in cache. Run 'hub generate' manually.`));
@@ -1761,6 +1761,71 @@ Additional context sources:
1761
1761
  - Use monitoring MCPs for production debugging and log analysis when available`);
1762
1762
  return parts.join("\n");
1763
1763
  }
1764
+ function buildFetchCheckerSection() {
1765
+ return `
1766
+ ## Fact Checker \u2014 Mandatory Verification
1767
+
1768
+ **NEVER state the status of any external resource without verifying it first.**
1769
+
1770
+ Before making ANY claim about:
1771
+ - PR status (merged, open, closed, approved, changes requested)
1772
+ - Branch state (ahead, behind, conflicts, existence)
1773
+ - Deploy status (deployed, failed, in progress)
1774
+ - CI/CD pipeline results (passed, failed, running)
1775
+ - Issue/task status (open, closed, in progress)
1776
+ - Service health (up, down, degraded)
1777
+ - Any other external state that can change over time
1778
+
1779
+ You MUST:
1780
+ 1. Use the appropriate tool to check the actual current state (GitHub CLI, MCP tools, git commands, etc.)
1781
+ 2. Only THEN report the result to the user
1782
+ 3. If you cannot verify, explicitly say "I was unable to verify this \u2014 please check manually"
1783
+
1784
+ **NEVER assume, guess, or rely on cached/stale information.** Every claim about external state must be backed by a fresh check.
1785
+ This applies to ALL agents in the pipeline, not just the orchestrator.`;
1786
+ }
1787
+ function buildMemorySection(config) {
1788
+ const enforce = config.memory?.enforce ?? false;
1789
+ if (enforce) {
1790
+ return `
1791
+ ## Team Memory \u2014 MANDATORY
1792
+
1793
+ This workspace has a team memory knowledge base via the \`team-memory\` MCP.
1794
+ The MCP automatically generates a steering file (\`team-memories-index\`) with an index of all active memories. This file is always included in your context.
1795
+
1796
+ **Use the index first.** You already know what memories exist \u2014 check the steering file before calling any MCP tool.
1797
+
1798
+ ### How to use memories:
1799
+ 1. **Read the index** \u2014 the \`team-memories-index\` steering file lists all active memories with title, category, tags, and ID
1800
+ 2. **Get full content** \u2014 use \`get_memory(id)\` when you need the complete context of a specific memory
1801
+ 3. **Semantic search** \u2014 use \`search_memories\` only when you need fuzzy/semantic matching beyond what the index shows
1802
+ 4. **Capture knowledge** \u2014 use \`add_memory\` when you discover decisions, conventions, gotchas, or domain insights during work
1803
+
1804
+ ### When completing work:
1805
+ - If you discovered something valuable (a decision, a gotcha, a convention, a domain insight, a debugging finding), use \`add_memory\` to capture it
1806
+ - Be specific: include context, rationale, and affected areas
1807
+ - Use appropriate categories: decisions, conventions, incidents, domain, gotchas
1808
+
1809
+ ### Why this matters:
1810
+ - Memories contain institutional knowledge that prevents repeated mistakes
1811
+ - Past decisions explain WHY things are the way they are
1812
+ - Conventions ensure consistency across the team
1813
+ - Gotchas save hours of debugging
1814
+
1815
+ Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_memories\`, \`archive_memory\`, \`remove_memory\`.`;
1816
+ }
1817
+ return `
1818
+ ## Team Memory
1819
+
1820
+ This workspace has a team memory knowledge base available via the \`team-memory\` MCP.
1821
+ The MCP automatically generates a steering file (\`team-memories-index\`) with an index of all active memories.
1822
+
1823
+ **Check the index first** \u2014 use \`get_memory(id)\` for full content, and \`search_memories\` only for semantic search beyond the index.
1824
+
1825
+ **After completing a task**, if you discovered something valuable (a decision, a gotcha, a convention, domain insight), use \`add_memory\` to capture it for the team.
1826
+
1827
+ Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_memories\`, \`archive_memory\`, \`remove_memory\`.`;
1828
+ }
1764
1829
  function buildCoreBehaviorSections() {
1765
1830
  const sections = [];
1766
1831
  sections.push(`
@@ -1909,16 +1974,10 @@ ${prompt.sections.after_delivery.trim()}`);
1909
1974
  sections.push(mcpToolsSectionOpenCode);
1910
1975
  }
1911
1976
  if (config.memory) {
1912
- sections.push(`
1913
- ## Team Memory
1914
-
1915
- This workspace has a team memory knowledge base available via the \`team-memory\` MCP.
1916
-
1917
- **Before starting any task**, use \`search_memories\` to find relevant context \u2014 past decisions, conventions, known issues, and domain knowledge. This avoids repeating mistakes and ensures consistency with previous choices.
1918
-
1919
- **After completing a task**, if you discovered something valuable (a decision, a gotcha, a convention, domain insight), use \`add_memory\` to capture it for the team.
1920
-
1921
- Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_memories\`, \`archive_memory\`, \`remove_memory\`.`);
1977
+ sections.push(buildMemorySection(config));
1978
+ }
1979
+ if (config.workflow?.fact_checker) {
1980
+ sections.push(buildFetchCheckerSection());
1922
1981
  }
1923
1982
  const designSectionOpenCode = buildDesignSection(config);
1924
1983
  if (designSectionOpenCode) sections.push(designSectionOpenCode);
@@ -2234,16 +2293,10 @@ ${prompt.sections.after_delivery.trim()}`);
2234
2293
  sections.push(mcpToolsSectionKiro);
2235
2294
  }
2236
2295
  if (config.memory) {
2237
- sections.push(`
2238
- ## Team Memory
2239
-
2240
- This workspace has a team memory knowledge base available via the \`team-memory\` MCP.
2241
-
2242
- **Before starting any task**, use \`search_memories\` to find relevant context \u2014 past decisions, conventions, known issues, and domain knowledge. This avoids repeating mistakes and ensures consistency with previous choices.
2243
-
2244
- **After completing a task**, if you discovered something valuable (a decision, a gotcha, a convention, domain insight), use \`add_memory\` to capture it for the team.
2245
-
2246
- Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_memories\`, \`archive_memory\`, \`remove_memory\`.`);
2296
+ sections.push(buildMemorySection(config));
2297
+ }
2298
+ if (config.workflow?.fact_checker) {
2299
+ sections.push(buildFetchCheckerSection());
2247
2300
  }
2248
2301
  const designSectionKiro = buildDesignSection(config);
2249
2302
  if (designSectionKiro) sections.push(designSectionKiro);
@@ -2429,16 +2482,10 @@ ${prompt.sections.after_delivery.trim()}`);
2429
2482
  sections.push(mcpToolsSectionCursor);
2430
2483
  }
2431
2484
  if (config.memory) {
2432
- sections.push(`
2433
- ## Team Memory
2434
-
2435
- This workspace has a team memory knowledge base available via the \`team-memory\` MCP.
2436
-
2437
- **Before starting any task**, use \`search_memories\` to find relevant context \u2014 past decisions, conventions, known issues, and domain knowledge. This avoids repeating mistakes and ensures consistency with previous choices.
2438
-
2439
- **After completing a task**, if you discovered something valuable (a decision, a gotcha, a convention, domain insight), use \`add_memory\` to capture it for the team.
2440
-
2441
- Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_memories\`, \`archive_memory\`, \`remove_memory\`.`);
2485
+ sections.push(buildMemorySection(config));
2486
+ }
2487
+ if (config.workflow?.fact_checker) {
2488
+ sections.push(buildFetchCheckerSection());
2442
2489
  }
2443
2490
  const designSectionCursor = buildDesignSection(config);
2444
2491
  if (designSectionCursor) sections.push(designSectionCursor);
@@ -115,6 +115,7 @@ interface MemoryConfig {
115
115
  categories?: string[];
116
116
  auto_capture?: boolean;
117
117
  embedding_model?: string;
118
+ enforce?: boolean;
118
119
  }
119
120
  interface RemoteSource {
120
121
  name: string;
@@ -163,6 +164,7 @@ interface HubConfig {
163
164
  pipeline?: WorkflowStep[];
164
165
  prompt?: PromptCustomization;
165
166
  enforce_workflow?: boolean;
167
+ fact_checker?: boolean;
166
168
  };
167
169
  }
168
170
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateCommand,
3
3
  generators
4
- } from "./chunk-FMBCFOVH.js";
4
+ } from "./chunk-QLFFIFIE.js";
5
5
  import "./chunk-VMN4KGAK.js";
6
6
  export {
7
7
  generateCommand,
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  horizontalLine,
7
7
  personaCommand,
8
8
  symbols
9
- } from "./chunk-FMBCFOVH.js";
9
+ } from "./chunk-QLFFIFIE.js";
10
10
  import {
11
11
  loadHubConfig,
12
12
  resolveConfigPath
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arvoretech/hub",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "description": "CLI for managing AI-aware multi-repository workspaces",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",