@pellux/goodvibes-agent 1.0.33 → 1.0.34
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 +22 -0
- package/README.md +71 -59
- package/dist/package/main.js +565 -420
- 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 +87 -86
- package/docs/providers-and-routing.md +3 -3
- package/docs/release-and-publishing.md +3 -3
- package/docs/tools-and-commands.md +149 -139
- package/docs/voice-and-live-tts.md +1 -1
- package/package.json +1 -1
- package/release/live-verification/live-verification.json +2 -2
- package/release/live-verification/live-verification.md +2 -2
- package/release/release-notes.md +6 -15
- package/release/release-readiness.json +4 -4
- package/src/agent/harness-control.ts +42 -3
- package/src/runtime/bootstrap.ts +10 -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 +9 -9
- package/src/tools/agent-harness-metadata.ts +25 -7
- 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-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 +6 -6
- package/src/tools/agent-harness-tool-schema.ts +1 -0
- package/src/tools/agent-harness-tool.ts +79 -36
- package/src/tools/agent-harness-ui-surface-metadata.ts +19 -11
- 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/version.ts +1 -1
|
@@ -11,6 +11,7 @@ export interface AgentHarnessUiSurfaceArgs {
|
|
|
11
11
|
readonly target?: unknown;
|
|
12
12
|
readonly key?: unknown;
|
|
13
13
|
readonly prefix?: unknown;
|
|
14
|
+
readonly includeParameters?: unknown;
|
|
14
15
|
readonly limit?: unknown;
|
|
15
16
|
readonly pane?: unknown;
|
|
16
17
|
}
|
|
@@ -727,22 +728,28 @@ function resolveHarnessUiSurface(args: AgentHarnessUiSurfaceArgs): UiSurfaceReso
|
|
|
727
728
|
return null;
|
|
728
729
|
}
|
|
729
730
|
|
|
730
|
-
function describeSurface(
|
|
731
|
+
function describeSurface(
|
|
732
|
+
context: CommandContext,
|
|
733
|
+
surface: UiSurfaceDefinition,
|
|
734
|
+
options: { readonly includeParameters?: boolean; readonly lookup?: UiSurfaceLookup } = {},
|
|
735
|
+
): Record<string, unknown> {
|
|
731
736
|
return {
|
|
732
737
|
id: surface.id,
|
|
733
738
|
label: surface.label,
|
|
734
739
|
kind: surface.kind,
|
|
735
740
|
summary: surface.summary,
|
|
736
741
|
command: surface.command,
|
|
737
|
-
...(lookup ? { lookup } : {}),
|
|
742
|
+
...(options.lookup ? { lookup: options.lookup } : {}),
|
|
738
743
|
preferredModelRoute: surface.preferredModelRoute,
|
|
739
|
-
parameters: surface.parameters ?? [],
|
|
740
744
|
available: surface.available(context),
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
745
|
+
...(options.includeParameters ? {
|
|
746
|
+
parameters: surface.parameters ?? [],
|
|
747
|
+
policy: {
|
|
748
|
+
effect: 'visible-ui-navigation',
|
|
749
|
+
confirmation: 'agent_harness mode:"open_ui_surface" requires confirm:true and explicitUserRequest.',
|
|
750
|
+
boundary: 'UI surface routing opens the same visible Agent shell surface the user can open. Use first-class model tools, settings modes, workspace actions, or confirmed slash-command mirrors for actual operations.',
|
|
751
|
+
},
|
|
752
|
+
} : {}),
|
|
746
753
|
};
|
|
747
754
|
}
|
|
748
755
|
|
|
@@ -753,15 +760,16 @@ export function totalHarnessUiSurfaces(): number {
|
|
|
753
760
|
export function listHarnessUiSurfaces(context: CommandContext, args: AgentHarnessUiSurfaceArgs): readonly Record<string, unknown>[] {
|
|
754
761
|
const query = readString(args.query);
|
|
755
762
|
const limit = readLimit(args.limit, 200);
|
|
763
|
+
const includeParameters = args.includeParameters === true;
|
|
756
764
|
return UI_SURFACES
|
|
757
|
-
.map((surface) => describeSurface(context, surface))
|
|
765
|
+
.map((surface) => describeSurface(context, surface, { includeParameters }))
|
|
758
766
|
.filter((surface) => surfaceMatches(surface, query))
|
|
759
767
|
.slice(0, limit);
|
|
760
768
|
}
|
|
761
769
|
|
|
762
770
|
export function describeHarnessUiSurface(context: CommandContext, args: AgentHarnessUiSurfaceArgs): Record<string, unknown> | null {
|
|
763
771
|
const resolved = resolveHarnessUiSurface(args);
|
|
764
|
-
if (resolved?.status === 'found') return describeSurface(context, resolved.surface, resolved.lookup);
|
|
772
|
+
if (resolved?.status === 'found') return describeSurface(context, resolved.surface, { includeParameters: true, lookup: resolved.lookup });
|
|
765
773
|
if (resolved?.status === 'ambiguous') {
|
|
766
774
|
return { status: 'ambiguous', input: resolved.input, candidates: resolved.candidates };
|
|
767
775
|
}
|
|
@@ -783,6 +791,6 @@ export async function openHarnessUiSurface(context: CommandContext, args: AgentH
|
|
|
783
791
|
const routed = await resolved.surface.open(context, args);
|
|
784
792
|
return {
|
|
785
793
|
...routed,
|
|
786
|
-
descriptor: describeSurface(context, resolved.surface, resolved.lookup),
|
|
794
|
+
descriptor: describeSurface(context, resolved.surface, { includeParameters: true, lookup: resolved.lookup }),
|
|
787
795
|
};
|
|
788
796
|
}
|
|
@@ -97,6 +97,11 @@ export function describeWorkspaceEditor(editor: AgentWorkspaceLocalEditor): Reco
|
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
function previewText(value: string, maxLength = 120): string {
|
|
101
|
+
const normalized = value.replace(/\s+/g, ' ').trim();
|
|
102
|
+
return normalized.length <= maxLength ? normalized : `${normalized.slice(0, maxLength - 1).trimEnd()}...`;
|
|
103
|
+
}
|
|
104
|
+
|
|
100
105
|
function selectedRoutineFromArgs(
|
|
101
106
|
snapshot: AgentWorkspaceRuntimeSnapshot,
|
|
102
107
|
args: AgentHarnessWorkspaceActionArgs,
|
|
@@ -163,6 +168,27 @@ export function describeWorkspaceAction(
|
|
|
163
168
|
};
|
|
164
169
|
}
|
|
165
170
|
|
|
171
|
+
function describeWorkspaceActionSummary(
|
|
172
|
+
category: AgentWorkspaceCategory,
|
|
173
|
+
action: AgentWorkspaceAction,
|
|
174
|
+
): Record<string, unknown> {
|
|
175
|
+
return {
|
|
176
|
+
id: action.id,
|
|
177
|
+
categoryId: category.id,
|
|
178
|
+
category: category.label,
|
|
179
|
+
group: category.group,
|
|
180
|
+
label: action.label,
|
|
181
|
+
summary: previewText(action.detail),
|
|
182
|
+
kind: action.kind,
|
|
183
|
+
safety: action.safety,
|
|
184
|
+
...(action.command ? { command: action.command } : {}),
|
|
185
|
+
...(action.targetCategoryId ? { targetCategoryId: action.targetCategoryId } : {}),
|
|
186
|
+
...(action.editorKind ? { editorKind: action.editorKind } : {}),
|
|
187
|
+
...(action.localKind ? { localKind: action.localKind } : {}),
|
|
188
|
+
...(action.localOperation ? { localOperation: action.localOperation } : {}),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
166
192
|
export function listWorkspaceActions(
|
|
167
193
|
context: CommandContext,
|
|
168
194
|
args: AgentHarnessWorkspaceActionArgs,
|
|
@@ -178,7 +204,9 @@ export function listWorkspaceActions(
|
|
|
178
204
|
return source
|
|
179
205
|
.filter((entry) => !categoryId || entry.category.id === categoryId)
|
|
180
206
|
.slice(0, limit)
|
|
181
|
-
.map((entry) =>
|
|
207
|
+
.map((entry) => includeEditor
|
|
208
|
+
? describeWorkspaceAction(entry.category, entry.action, { includeEditor, editorContext })
|
|
209
|
+
: describeWorkspaceActionSummary(entry.category, entry.action));
|
|
182
210
|
}
|
|
183
211
|
|
|
184
212
|
function workspaceActionLookupFromArgs(args: AgentHarnessWorkspaceActionArgs): { readonly source: WorkspaceActionLookup['source']; readonly input: string } | null {
|
|
@@ -261,11 +261,7 @@ export function createAgentKnowledgeIngestTool(
|
|
|
261
261
|
return {
|
|
262
262
|
definition: {
|
|
263
263
|
name: 'agent_knowledge_ingest',
|
|
264
|
-
description:
|
|
265
|
-
'Ingest one confirmed source into isolated Agent Knowledge.',
|
|
266
|
-
'Use only for explicit ingest/import requests.',
|
|
267
|
-
'Supports URL, file, bookmark, history, and connector sources.',
|
|
268
|
-
].join(' '),
|
|
264
|
+
description: 'Ingest one confirmed source into isolated Agent Knowledge.',
|
|
269
265
|
parameters: {
|
|
270
266
|
type: 'object',
|
|
271
267
|
properties: {
|
|
@@ -123,11 +123,7 @@ export function createAgentKnowledgeTool(
|
|
|
123
123
|
return {
|
|
124
124
|
definition: {
|
|
125
125
|
name: 'agent_knowledge',
|
|
126
|
-
description:
|
|
127
|
-
'Read isolated Agent Knowledge.',
|
|
128
|
-
'Use for status, ask/search, source/node/issue lists, item lookup, map summary, and connector inspection.',
|
|
129
|
-
'Read-only.',
|
|
130
|
-
].join(' '),
|
|
126
|
+
description: 'Read isolated Agent Knowledge.',
|
|
131
127
|
parameters: {
|
|
132
128
|
type: 'object',
|
|
133
129
|
properties: {
|
|
@@ -735,10 +735,7 @@ export function createAgentLocalRegistryTool(shellPaths: ShellPathService, memor
|
|
|
735
735
|
return {
|
|
736
736
|
definition: {
|
|
737
737
|
name: 'agent_local_registry',
|
|
738
|
-
description:
|
|
739
|
-
'Inspect or update Agent-local records: memory, notes, personas, skills, bundles, and routines.',
|
|
740
|
-
'Deletion requires confirm:true plus explicitUserRequest.',
|
|
741
|
-
].join(' '),
|
|
738
|
+
description: 'Inspect or update Agent-local records.',
|
|
742
739
|
parameters: {
|
|
743
740
|
type: 'object',
|
|
744
741
|
properties: {
|
|
@@ -52,11 +52,7 @@ export function createAgentMediaGenerateTool(
|
|
|
52
52
|
return {
|
|
53
53
|
definition: {
|
|
54
54
|
name: 'agent_media_generate',
|
|
55
|
-
description:
|
|
56
|
-
'Generate one confirmed image or video artifact.',
|
|
57
|
-
'Use only for explicit media generation requests.',
|
|
58
|
-
'Returns artifact ids, not inline base64.',
|
|
59
|
-
].join(' '),
|
|
55
|
+
description: 'Generate one confirmed image or video artifact.',
|
|
60
56
|
parameters: {
|
|
61
57
|
type: 'object',
|
|
62
58
|
properties: {
|
|
@@ -78,11 +78,7 @@ export function createAgentNotifyTool(
|
|
|
78
78
|
return {
|
|
79
79
|
definition: {
|
|
80
80
|
name: 'agent_notify',
|
|
81
|
-
description:
|
|
82
|
-
'Send one confirmed plain-text notification.',
|
|
83
|
-
'Use only for explicit notify/message/alert requests.',
|
|
84
|
-
'Uses existing targets only.',
|
|
85
|
-
].join(' '),
|
|
81
|
+
description: 'Send one confirmed plain-text notification.',
|
|
86
82
|
parameters: {
|
|
87
83
|
type: 'object',
|
|
88
84
|
properties: {
|
|
@@ -35,11 +35,7 @@ export function createAgentOperatorActionTool(
|
|
|
35
35
|
return {
|
|
36
36
|
definition: {
|
|
37
37
|
name: 'agent_operator_action',
|
|
38
|
-
description:
|
|
39
|
-
'Run one confirmed allowlisted operator action.',
|
|
40
|
-
'Use only for explicit approval, automation, or schedule requests.',
|
|
41
|
-
'No automation definition edits or host lifecycle.',
|
|
42
|
-
].join(' '),
|
|
38
|
+
description: 'Run one confirmed allowlisted operator action.',
|
|
43
39
|
parameters: {
|
|
44
40
|
type: 'object',
|
|
45
41
|
properties: {
|
|
@@ -175,11 +175,7 @@ export function createAgentOperatorBriefingTool(
|
|
|
175
175
|
return {
|
|
176
176
|
definition: {
|
|
177
177
|
name: 'agent_operator_briefing',
|
|
178
|
-
description:
|
|
179
|
-
'Read connected Agent operator state for a concise briefing.',
|
|
180
|
-
'Use for pending attention, approvals, automation, schedules, or status.',
|
|
181
|
-
'Read-only.',
|
|
182
|
-
].join(' '),
|
|
178
|
+
description: 'Read connected Agent operator state for a concise briefing.',
|
|
183
179
|
parameters: {
|
|
184
180
|
type: 'object',
|
|
185
181
|
properties: {},
|
|
@@ -126,10 +126,7 @@ export function isBlockedReadPath(path: string): boolean {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
function narrowReadToolDefinitionForAgentPolicy(tool: Tool): void {
|
|
129
|
-
tool.definition.description =
|
|
130
|
-
'Read ordinary project files for GoodVibes Agent with bounded, non-secret, main-conversation policy.',
|
|
131
|
-
'Hidden paths, secret-looking files, broad batches, unoptimized image extraction, and oversized image reads are disabled.',
|
|
132
|
-
].join(' ');
|
|
129
|
+
tool.definition.description = 'Read ordinary non-secret project files for GoodVibes Agent.';
|
|
133
130
|
tool.definition.sideEffects = ['read_fs'];
|
|
134
131
|
tool.definition.concurrency = 'serial';
|
|
135
132
|
|
|
@@ -120,11 +120,7 @@ export function createAgentReminderScheduleTool(
|
|
|
120
120
|
return {
|
|
121
121
|
definition: {
|
|
122
122
|
name: 'agent_reminder_schedule',
|
|
123
|
-
description:
|
|
124
|
-
'Schedule one confirmed GoodVibes Agent reminder.',
|
|
125
|
-
'Use only for an explicit reminder request.',
|
|
126
|
-
'No host lifecycle, background job, or Knowledge write.',
|
|
127
|
-
].join(' '),
|
|
123
|
+
description: 'Schedule one confirmed GoodVibes Agent reminder.',
|
|
128
124
|
parameters: {
|
|
129
125
|
type: 'object',
|
|
130
126
|
properties: {
|
|
@@ -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: {
|
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.34';
|
|
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 {
|