@arvoretech/hub 0.20.0 → 0.21.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-ZH3P5EB4.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,76 @@ 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
+
1795
+ **YOU MUST consult memory at the START of EVERY interaction.** This is not optional.
1796
+
1797
+ ### On every message from the user:
1798
+ 1. Extract the key topics, entities, and domain terms from the user's request
1799
+ 2. Run \`search_memories\` with relevant keywords BEFORE doing anything else
1800
+ 3. If memories are found, factor them into your response \u2014 they may contain past decisions, conventions, known issues, or domain context that directly affects the current task
1801
+ 4. If no relevant memories are found, proceed normally
1802
+
1803
+ ### Before calling tools:
1804
+ When you are about to use a tool that interacts with external systems (database queries, API calls, git operations, deployments, file modifications in specific domains), do a quick \`search_memories\` for the relevant entity or system first. There may be a memory about:
1805
+ - Schema changes, migrations, or known issues with that table/endpoint
1806
+ - Conventions for how that system should be used
1807
+ - Past incidents or gotchas that affect the operation you're about to perform
1808
+ This does NOT apply to simple read/search tools \u2014 use judgment on when a memory check adds value.
1809
+
1810
+ ### When completing work:
1811
+ - If you discovered something valuable (a decision, a gotcha, a convention, a domain insight, a debugging finding), use \`add_memory\` to capture it
1812
+ - Be specific: include context, rationale, and affected areas
1813
+ - Use appropriate categories: decisions, conventions, incidents, domain, gotchas
1814
+
1815
+ ### Why this matters:
1816
+ - Memories contain institutional knowledge that prevents repeated mistakes
1817
+ - Past decisions explain WHY things are the way they are
1818
+ - Conventions ensure consistency across the team
1819
+ - Gotchas save hours of debugging
1820
+
1821
+ Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_memories\`, \`archive_memory\`, \`remove_memory\`.`;
1822
+ }
1823
+ return `
1824
+ ## Team Memory
1825
+
1826
+ This workspace has a team memory knowledge base available via the \`team-memory\` MCP.
1827
+
1828
+ **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.
1829
+
1830
+ **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.
1831
+
1832
+ Available tools: \`search_memories\`, \`get_memory\`, \`add_memory\`, \`list_memories\`, \`archive_memory\`, \`remove_memory\`.`;
1833
+ }
1764
1834
  function buildCoreBehaviorSections() {
1765
1835
  const sections = [];
1766
1836
  sections.push(`
@@ -1909,16 +1979,10 @@ ${prompt.sections.after_delivery.trim()}`);
1909
1979
  sections.push(mcpToolsSectionOpenCode);
1910
1980
  }
1911
1981
  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\`.`);
1982
+ sections.push(buildMemorySection(config));
1983
+ }
1984
+ if (config.workflow?.fact_checker) {
1985
+ sections.push(buildFetchCheckerSection());
1922
1986
  }
1923
1987
  const designSectionOpenCode = buildDesignSection(config);
1924
1988
  if (designSectionOpenCode) sections.push(designSectionOpenCode);
@@ -2234,16 +2298,10 @@ ${prompt.sections.after_delivery.trim()}`);
2234
2298
  sections.push(mcpToolsSectionKiro);
2235
2299
  }
2236
2300
  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\`.`);
2301
+ sections.push(buildMemorySection(config));
2302
+ }
2303
+ if (config.workflow?.fact_checker) {
2304
+ sections.push(buildFetchCheckerSection());
2247
2305
  }
2248
2306
  const designSectionKiro = buildDesignSection(config);
2249
2307
  if (designSectionKiro) sections.push(designSectionKiro);
@@ -2429,16 +2487,10 @@ ${prompt.sections.after_delivery.trim()}`);
2429
2487
  sections.push(mcpToolsSectionCursor);
2430
2488
  }
2431
2489
  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\`.`);
2490
+ sections.push(buildMemorySection(config));
2491
+ }
2492
+ if (config.workflow?.fact_checker) {
2493
+ sections.push(buildFetchCheckerSection());
2442
2494
  }
2443
2495
  const designSectionCursor = buildDesignSection(config);
2444
2496
  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-KRYKCNRK.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-KRYKCNRK.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.21.0",
4
4
  "description": "CLI for managing AI-aware multi-repository workspaces",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",