@pellux/goodvibes-agent 1.0.33 → 1.0.35

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 (63) hide show
  1. package/CHANGELOG.md +35 -4
  2. package/README.md +73 -59
  3. package/dist/package/{ast-grep-napi.linux-x64-gnu-mkk8xwww.node → ast-grep-napi.linux-x64-gnu-swtppvy9.node} +0 -0
  4. package/dist/package/{ast-grep-napi.linux-x64-musl-ryqtgdv6.node → ast-grep-napi.linux-x64-musl-ttfcdtap.node} +0 -0
  5. package/dist/package/main.js +49347 -50698
  6. package/docs/README.md +25 -21
  7. package/docs/channels-remote-and-api.md +2 -2
  8. package/docs/connected-host.md +3 -3
  9. package/docs/getting-started.md +89 -85
  10. package/docs/providers-and-routing.md +3 -3
  11. package/docs/release-and-publishing.md +3 -3
  12. package/docs/tools-and-commands.md +152 -138
  13. package/docs/voice-and-live-tts.md +1 -1
  14. package/package.json +1 -1
  15. package/release/live-verification/live-verification.json +13 -13
  16. package/release/live-verification/live-verification.md +17 -17
  17. package/release/release-notes.md +6 -15
  18. package/release/release-readiness.json +35 -35
  19. package/src/agent/harness-control.ts +42 -3
  20. package/src/runtime/bootstrap-core.ts +2 -0
  21. package/src/runtime/bootstrap.ts +12 -18
  22. package/src/tools/agent-analysis-registry-policy.ts +2 -9
  23. package/src/tools/agent-channel-send-tool.ts +1 -5
  24. package/src/tools/agent-context-policy.ts +1 -5
  25. package/src/tools/agent-find-policy.ts +1 -4
  26. package/src/tools/agent-harness-channel-metadata.ts +23 -23
  27. package/src/tools/agent-harness-cli-metadata.ts +4 -1
  28. package/src/tools/agent-harness-command-catalog.ts +10 -3
  29. package/src/tools/agent-harness-connected-host-status.ts +8 -2
  30. package/src/tools/agent-harness-delegation-posture.ts +5 -5
  31. package/src/tools/agent-harness-mcp-metadata.ts +30 -28
  32. package/src/tools/agent-harness-media-posture.ts +10 -10
  33. package/src/tools/agent-harness-metadata.ts +65 -35
  34. package/src/tools/agent-harness-mode-catalog.ts +205 -0
  35. package/src/tools/agent-harness-model-routing.ts +14 -14
  36. package/src/tools/agent-harness-model-tool-catalog.ts +7 -2
  37. package/src/tools/agent-harness-notification-metadata.ts +17 -17
  38. package/src/tools/agent-harness-operator-methods.ts +2 -2
  39. package/src/tools/agent-harness-pairing-posture.ts +7 -7
  40. package/src/tools/agent-harness-panel-metadata.ts +26 -12
  41. package/src/tools/agent-harness-provider-account-metadata.ts +33 -31
  42. package/src/tools/agent-harness-security-posture.ts +9 -7
  43. package/src/tools/agent-harness-service-posture.ts +22 -16
  44. package/src/tools/agent-harness-session-metadata.ts +9 -7
  45. package/src/tools/agent-harness-setup-posture.ts +7 -7
  46. package/src/tools/agent-harness-tool-schema.ts +2 -1
  47. package/src/tools/agent-harness-tool.ts +91 -38
  48. package/src/tools/agent-harness-ui-surface-metadata.ts +40 -28
  49. package/src/tools/agent-harness-workspace-actions.ts +29 -1
  50. package/src/tools/agent-knowledge-ingest-tool.ts +1 -5
  51. package/src/tools/agent-knowledge-tool.ts +1 -5
  52. package/src/tools/agent-local-registry-tool.ts +1 -4
  53. package/src/tools/agent-media-generate-tool.ts +1 -5
  54. package/src/tools/agent-notify-tool.ts +1 -5
  55. package/src/tools/agent-operator-action-tool.ts +1 -5
  56. package/src/tools/agent-operator-briefing-tool.ts +1 -5
  57. package/src/tools/agent-read-policy.ts +1 -4
  58. package/src/tools/agent-reminder-schedule-tool.ts +1 -5
  59. package/src/tools/agent-tool-policy-guard.ts +7 -34
  60. package/src/tools/agent-web-search-policy.ts +1 -4
  61. package/src/tools/agent-work-plan-tool.ts +1 -5
  62. package/src/tools/tool-definition-compaction.ts +49 -0
  63. package/src/version.ts +1 -1
@@ -309,11 +309,7 @@ export function normalizeAgentToolInvocationForAgentPolicy(args: AgentToolArgs):
309
309
  }
310
310
 
311
311
  export function wrapBlockedMainConversationToolForAgentPolicy(tool: Tool): void {
312
- tool.definition.description = [
313
- `Blocked in GoodVibes Agent main conversation: ${tool.definition.name}.`,
314
- 'Use explicit GoodVibes TUI build delegation for build/fix/review/code execution work.',
315
- 'Use Agent-owned local registries and isolated Agent Knowledge routes for Agent memory and knowledge work.',
316
- ].join(' ');
312
+ tool.definition.description = `Blocked in GoodVibes Agent: ${tool.definition.name}.`;
317
313
  tool.definition.sideEffects = [];
318
314
  tool.execute = async () => ({ success: false, error: LOCAL_CODING_TOOL_DENIAL });
319
315
  }
@@ -349,11 +345,7 @@ export function wrapStateToolForAgentPolicy(tool: Tool): void {
349
345
  }
350
346
 
351
347
  export function wrapBlockedSettingsToolForAgentPolicy(tool: Tool): void {
352
- tool.definition.description = [
353
- 'Blocked in GoodVibes Agent main conversation: configuration mutation.',
354
- 'Use explicit Agent CLI/slash settings commands for intentional config changes.',
355
- 'Connected-host lifecycle and service exposure remain externally managed outside GoodVibes Agent.',
356
- ].join(' ');
348
+ tool.definition.description = 'Blocked in GoodVibes Agent: configuration mutation.';
357
349
  tool.definition.sideEffects = [];
358
350
  tool.definition.parameters = {
359
351
  type: 'object',
@@ -603,11 +595,7 @@ function isPresent(value: unknown): boolean {
603
595
  }
604
596
 
605
597
  function narrowAgentToolDefinitionForAgentPolicy(tool: Tool): void {
606
- tool.definition.description = [
607
- 'Read-only local Agent inspection for GoodVibes Agent.',
608
- 'This product does not create separate Agent jobs or run local delegated review chains.',
609
- 'For build/fix/review work, delegate to GoodVibes TUI through the explicit build-delegation path instead.',
610
- ].join(' ');
598
+ tool.definition.description = 'Read-only local Agent inspection for GoodVibes Agent.';
611
599
  tool.definition.sideEffects = [];
612
600
 
613
601
  const properties = tool.definition.parameters.properties;
@@ -619,11 +607,7 @@ function narrowAgentToolDefinitionForAgentPolicy(tool: Tool): void {
619
607
  }
620
608
 
621
609
  function narrowExecToolDefinitionForAgentPolicy(tool: Tool): void {
622
- tool.definition.description = [
623
- 'Execute foreground shell commands serially for GoodVibes Agent main-conversation work.',
624
- 'Background processes, parallel batches, background process controls, and exec file_ops are disabled by Agent policy.',
625
- 'Delegate long-running build/fix/review execution to GoodVibes TUI instead.',
626
- ].join(' ');
610
+ tool.definition.description = 'Execute foreground shell commands serially for GoodVibes Agent.';
627
611
 
628
612
  const properties = tool.definition.parameters.properties;
629
613
  if (!isRecord(properties)) return;
@@ -648,11 +632,7 @@ function narrowExecToolDefinitionForAgentPolicy(tool: Tool): void {
648
632
  }
649
633
 
650
634
  function narrowFetchToolDefinitionForAgentPolicy(tool: Tool): void {
651
- tool.definition.description = [
652
- 'Fetch public URLs for GoodVibes Agent with serial, read-only HTTP requests.',
653
- 'Only GET, HEAD, and OPTIONS are available in the main conversation.',
654
- 'Credentialed requests, request bodies, trust overrides, raw unsanitized responses, and parallel batches are disabled by Agent policy.',
655
- ].join(' ');
635
+ tool.definition.description = 'Fetch public URLs with serial, read-only HTTP requests.';
656
636
 
657
637
  const properties = tool.definition.parameters.properties;
658
638
  if (!isRecord(properties)) return;
@@ -689,11 +669,7 @@ function narrowFetchToolDefinitionForAgentPolicy(tool: Tool): void {
689
669
  }
690
670
 
691
671
  function narrowStateToolDefinitionForAgentPolicy(tool: Tool): void {
692
- tool.definition.description = [
693
- 'Inspect runtime-owned state for GoodVibes Agent.',
694
- 'State mutation, runtime-owned memory writes, hook changes, output-mode changes, and analytics writes are disabled in the main conversation.',
695
- 'Use Agent-owned commands for intentional memory, skill, persona, and routine changes.',
696
- ].join(' ');
672
+ tool.definition.description = 'Inspect runtime-owned state for GoodVibes Agent.';
697
673
 
698
674
  const properties = tool.definition.parameters.properties;
699
675
  if (!isRecord(properties)) return;
@@ -723,10 +699,7 @@ function narrowStateToolDefinitionForAgentPolicy(tool: Tool): void {
723
699
  }
724
700
 
725
701
  function narrowInspectToolDefinitionForAgentPolicy(tool: Tool): void {
726
- tool.definition.description = [
727
- 'Inspect and analyze project structure for GoodVibes Agent.',
728
- 'Scaffold mode is dry-run-only in the main conversation; code creation must be delegated to GoodVibes TUI.',
729
- ].join(' ');
702
+ tool.definition.description = 'Inspect and analyze project structure for GoodVibes Agent.';
730
703
 
731
704
  const properties = tool.definition.parameters.properties;
732
705
  if (!isRecord(properties)) return;
@@ -73,10 +73,7 @@ export function normalizeWebSearchToolInvocationForAgentPolicy(args: WebSearchTo
73
73
  }
74
74
 
75
75
  function narrowWebSearchToolDefinitionForAgentPolicy(tool: Tool): void {
76
- tool.definition.description = [
77
- 'Run bounded, read-only web research for GoodVibes Agent.',
78
- 'Full-page/raw/summary extraction, safe-search off, and high-fanout searches are disabled in the main conversation.',
79
- ].join(' ');
76
+ tool.definition.description = 'Run bounded, read-only web research for GoodVibes Agent.';
80
77
  tool.definition.sideEffects = ['network'];
81
78
 
82
79
  const properties = tool.definition.parameters.properties;
@@ -165,11 +165,7 @@ export function createAgentWorkPlanTool(store: WorkPlanStore): Tool {
165
165
  return {
166
166
  definition: {
167
167
  name: 'agent_work_plan',
168
- description: [
169
- 'Inspect or update the visible Agent-local work plan.',
170
- 'Use for task/status tracking.',
171
- 'Destructive actions require confirm:true plus explicitUserRequest.',
172
- ].join(' '),
168
+ description: 'Inspect or update the visible Agent-local work plan.',
173
169
  parameters: {
174
170
  type: 'object',
175
171
  properties: {
@@ -0,0 +1,49 @@
1
+ import type { ToolRegistry } from '@pellux/goodvibes-sdk/platform/tools';
2
+ import type { ToolDefinition } from '@pellux/goodvibes-sdk/platform/types';
3
+
4
+ const DEFAULT_TOOL_DESCRIPTION_LIMIT = 120;
5
+
6
+ const TOOL_DESCRIPTION_OVERRIDES: Readonly<Record<string, string>> = {
7
+ agent_harness: 'Harness catalog/control. Start with mode:"modes"; inspect settings, commands, UI, status, tools, and confirmed effects.',
8
+ agent_knowledge: 'Read isolated Agent Knowledge.',
9
+ agent_knowledge_ingest: 'Ingest one confirmed source into isolated Agent Knowledge.',
10
+ agent_local_registry: 'Inspect or update Agent-local memory, notes, personas, skills, bundles, and routines.',
11
+ agent_work_plan: 'Inspect or update the visible Agent-local work plan.',
12
+ agent_operator_briefing: 'Read connected Agent operator state.',
13
+ agent_operator_action: 'Run one confirmed allowlisted operator action.',
14
+ agent_reminder_schedule: 'Schedule one confirmed Agent reminder.',
15
+ agent_channel_send: 'Send one confirmed message through one configured Agent target.',
16
+ agent_notify: 'Send one confirmed plain-text notification.',
17
+ agent_media_generate: 'Generate one confirmed image or video artifact.',
18
+ };
19
+
20
+ function compactText(value: string, limit: number): string {
21
+ const normalized = value.replace(/\s+/g, ' ').trim();
22
+ if (normalized.length <= limit) return normalized;
23
+ if (limit <= 3) return normalized.slice(0, limit);
24
+ return `${normalized.slice(0, limit - 3).trimEnd()}...`;
25
+ }
26
+
27
+ function stripSchemaDescriptions(value: unknown): unknown {
28
+ if (Array.isArray(value)) return value.map(stripSchemaDescriptions);
29
+ if (!value || typeof value !== 'object') return value;
30
+
31
+ const result: Record<string, unknown> = {};
32
+ for (const [key, entry] of Object.entries(value)) {
33
+ if (key === 'description') continue;
34
+ result[key] = stripSchemaDescriptions(entry);
35
+ }
36
+ return result;
37
+ }
38
+
39
+ function compactToolDefinition(definition: ToolDefinition): void {
40
+ definition.description = TOOL_DESCRIPTION_OVERRIDES[definition.name]
41
+ ?? compactText(definition.description, DEFAULT_TOOL_DESCRIPTION_LIMIT);
42
+ definition.parameters = stripSchemaDescriptions(definition.parameters) as Record<string, unknown>;
43
+ }
44
+
45
+ export function compactRegisteredToolDefinitions(toolRegistry: ToolRegistry): void {
46
+ for (const definition of toolRegistry.getToolDefinitions()) {
47
+ compactToolDefinition(definition);
48
+ }
49
+ }
package/src/version.ts CHANGED
@@ -6,7 +6,7 @@ import { join } from 'node:path';
6
6
  // The prebuild script updates the fallback value before compilation.
7
7
  // Uses import.meta.dir (Bun) to locate package.json relative to this file,
8
8
  // which is correct regardless of the process working directory.
9
- let _version = '1.0.33';
9
+ let _version = '1.0.35';
10
10
  let _sdkVersion = '0.33.36';
11
11
  try {
12
12
  const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', 'package.json'), 'utf-8')) as {