@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.
- package/CHANGELOG.md +35 -4
- package/README.md +73 -59
- package/dist/package/{ast-grep-napi.linux-x64-gnu-mkk8xwww.node → ast-grep-napi.linux-x64-gnu-swtppvy9.node} +0 -0
- package/dist/package/{ast-grep-napi.linux-x64-musl-ryqtgdv6.node → ast-grep-napi.linux-x64-musl-ttfcdtap.node} +0 -0
- package/dist/package/main.js +49347 -50698
- package/docs/README.md +25 -21
- package/docs/channels-remote-and-api.md +2 -2
- package/docs/connected-host.md +3 -3
- package/docs/getting-started.md +89 -85
- package/docs/providers-and-routing.md +3 -3
- package/docs/release-and-publishing.md +3 -3
- package/docs/tools-and-commands.md +152 -138
- package/docs/voice-and-live-tts.md +1 -1
- package/package.json +1 -1
- package/release/live-verification/live-verification.json +13 -13
- package/release/live-verification/live-verification.md +17 -17
- package/release/release-notes.md +6 -15
- package/release/release-readiness.json +35 -35
- package/src/agent/harness-control.ts +42 -3
- package/src/runtime/bootstrap-core.ts +2 -0
- package/src/runtime/bootstrap.ts +12 -18
- package/src/tools/agent-analysis-registry-policy.ts +2 -9
- package/src/tools/agent-channel-send-tool.ts +1 -5
- package/src/tools/agent-context-policy.ts +1 -5
- package/src/tools/agent-find-policy.ts +1 -4
- package/src/tools/agent-harness-channel-metadata.ts +23 -23
- package/src/tools/agent-harness-cli-metadata.ts +4 -1
- package/src/tools/agent-harness-command-catalog.ts +10 -3
- package/src/tools/agent-harness-connected-host-status.ts +8 -2
- package/src/tools/agent-harness-delegation-posture.ts +5 -5
- package/src/tools/agent-harness-mcp-metadata.ts +30 -28
- package/src/tools/agent-harness-media-posture.ts +10 -10
- package/src/tools/agent-harness-metadata.ts +65 -35
- package/src/tools/agent-harness-mode-catalog.ts +205 -0
- package/src/tools/agent-harness-model-routing.ts +14 -14
- package/src/tools/agent-harness-model-tool-catalog.ts +7 -2
- package/src/tools/agent-harness-notification-metadata.ts +17 -17
- package/src/tools/agent-harness-operator-methods.ts +2 -2
- package/src/tools/agent-harness-pairing-posture.ts +7 -7
- package/src/tools/agent-harness-panel-metadata.ts +26 -12
- package/src/tools/agent-harness-provider-account-metadata.ts +33 -31
- package/src/tools/agent-harness-security-posture.ts +9 -7
- package/src/tools/agent-harness-service-posture.ts +22 -16
- package/src/tools/agent-harness-session-metadata.ts +9 -7
- package/src/tools/agent-harness-setup-posture.ts +7 -7
- package/src/tools/agent-harness-tool-schema.ts +2 -1
- package/src/tools/agent-harness-tool.ts +91 -38
- package/src/tools/agent-harness-ui-surface-metadata.ts +40 -28
- package/src/tools/agent-harness-workspace-actions.ts +29 -1
- package/src/tools/agent-knowledge-ingest-tool.ts +1 -5
- package/src/tools/agent-knowledge-tool.ts +1 -5
- package/src/tools/agent-local-registry-tool.ts +1 -4
- package/src/tools/agent-media-generate-tool.ts +1 -5
- package/src/tools/agent-notify-tool.ts +1 -5
- package/src/tools/agent-operator-action-tool.ts +1 -5
- package/src/tools/agent-operator-briefing-tool.ts +1 -5
- package/src/tools/agent-read-policy.ts +1 -4
- package/src/tools/agent-reminder-schedule-tool.ts +1 -5
- package/src/tools/agent-tool-policy-guard.ts +7 -34
- package/src/tools/agent-web-search-policy.ts +1 -4
- package/src/tools/agent-work-plan-tool.ts +1 -5
- package/src/tools/tool-definition-compaction.ts +49 -0
- 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.
|
|
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 {
|