@f5-sales-demo/xcsh 22.1.0 → 22.2.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.
- package/CHANGELOG.md +2 -0
- package/package.json +8 -8
- package/src/cli/update-cli.ts +1 -30
- package/src/cli/update-recommendation.ts +3 -3
- package/src/commands/update.ts +15 -64
- package/src/extensibility/plugins/marketplace/builtin-marketplace-snapshot.ts +1 -1
- package/src/extensibility/plugins/marketplace/builtin-marketplace.provenance.json +3 -3
- package/src/internal-urls/api-catalog-discovery.ts +56 -1
- package/src/internal-urls/api-catalog-preflight.ts +35 -63
- package/src/internal-urls/api-catalog-qmd-index.generated.ts +2 -2
- package/src/internal-urls/build-info.generated.ts +8 -8
- package/src/internal-urls/docs-index.generated.ts +2 -2
- package/src/internal-urls/knowledge-classifier.ts +209 -0
- package/src/internal-urls/knowledge-search.ts +90 -0
- package/src/prompts/internal-urls/about.md +1 -1
- package/src/prompts/rules/llms-search.md +10 -1
- package/src/prompts/system/system-prompt.md +15 -1
- package/src/prompts/tools/display-media.md +4 -0
- package/src/services/xcsh-knowledge.ts +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -42,6 +42,8 @@
|
|
|
42
42
|
|
|
43
43
|
### Changed
|
|
44
44
|
|
|
45
|
+
- Standardized executable updates on `xcsh self-update`; `xcsh update` is now reserved for strict manifest resource updates ([#4487](https://github.com/f5-sales-demo/xcsh/issues/4487)).
|
|
46
|
+
|
|
45
47
|
- Added `power.sleepPrevention` with an `idle` default and cumulative `off`, `idle`, `display`, and
|
|
46
48
|
`system` modes for session-scoped sleep prevention on macOS, Linux, and Windows
|
|
47
49
|
([#3724](https://github.com/f5-sales-demo/xcsh/issues/3724)).
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@f5-sales-demo/xcsh",
|
|
4
|
-
"version": "22.
|
|
4
|
+
"version": "22.2.0",
|
|
5
5
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
6
6
|
"homepage": "https://github.com/f5-sales-demo/xcsh",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -67,13 +67,13 @@
|
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"@agentclientprotocol/sdk": "1.4.0",
|
|
70
|
-
"@f5-sales-demo/pi-agent-core": "22.
|
|
71
|
-
"@f5-sales-demo/pi-ai": "22.
|
|
72
|
-
"@f5-sales-demo/pi-natives": "22.
|
|
73
|
-
"@f5-sales-demo/pi-resource-management": "22.
|
|
74
|
-
"@f5-sales-demo/pi-tui": "22.
|
|
75
|
-
"@f5-sales-demo/pi-utils": "22.
|
|
76
|
-
"@f5-sales-demo/xcsh-stats": "22.
|
|
70
|
+
"@f5-sales-demo/pi-agent-core": "22.2.0",
|
|
71
|
+
"@f5-sales-demo/pi-ai": "22.2.0",
|
|
72
|
+
"@f5-sales-demo/pi-natives": "22.2.0",
|
|
73
|
+
"@f5-sales-demo/pi-resource-management": "22.2.0",
|
|
74
|
+
"@f5-sales-demo/pi-tui": "22.2.0",
|
|
75
|
+
"@f5-sales-demo/pi-utils": "22.2.0",
|
|
76
|
+
"@f5-sales-demo/xcsh-stats": "22.2.0",
|
|
77
77
|
"@mozilla/readability": "^0.6",
|
|
78
78
|
"@resvg/resvg-wasm": "2.6.2",
|
|
79
79
|
"@sinclair/typebox": "0.34.52",
|
package/src/cli/update-cli.ts
CHANGED
|
@@ -27,14 +27,6 @@ export interface UpdateCommandDependencies {
|
|
|
27
27
|
stderr(value: string): void;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
export function parseUpdateArgs(args: string[]): { force: boolean; check: boolean } | undefined {
|
|
31
|
-
if (args.length === 0 || args[0] !== "self-update") return undefined;
|
|
32
|
-
return {
|
|
33
|
-
force: args.includes("--force") || args.includes("-f"),
|
|
34
|
-
check: args.includes("--check") || args.includes("-c"),
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
30
|
async function getLatestRelease(): Promise<ReleaseInfo> {
|
|
39
31
|
const response = await fetch("https://registry.npmjs.org/@f5-sales-demo/xcsh/latest");
|
|
40
32
|
if (!response.ok) throw new Error(`Failed to fetch release info: ${response.statusText}`);
|
|
@@ -147,7 +139,7 @@ function defaultUpdateCommandDependencies(): UpdateCommandDependencies {
|
|
|
147
139
|
};
|
|
148
140
|
}
|
|
149
141
|
|
|
150
|
-
/** Run the
|
|
142
|
+
/** Run the executable self-update policy. */
|
|
151
143
|
export async function runUpdateCommand(
|
|
152
144
|
opts: { force: boolean; check: boolean },
|
|
153
145
|
deps: UpdateCommandDependencies = defaultUpdateCommandDependencies(),
|
|
@@ -205,24 +197,3 @@ export async function runUpdateCommand(
|
|
|
205
197
|
export function getBrewUpgradeCommand(): string {
|
|
206
198
|
return "brew upgrade --cask f5-sales-demo/tap/xcsh";
|
|
207
199
|
}
|
|
208
|
-
|
|
209
|
-
export function printUpdateHelp(): void {
|
|
210
|
-
console.log(`${chalk.bold(`${APP_NAME} update`)} - Check the executable and follow its installation channel
|
|
211
|
-
|
|
212
|
-
${chalk.bold("Usage:")}
|
|
213
|
-
${APP_NAME} update [--check | --force]
|
|
214
|
-
${APP_NAME} update -f <manifest> [resource options]
|
|
215
|
-
|
|
216
|
-
${chalk.bold("Executable options:")}
|
|
217
|
-
-c, --check Report the detected channel without changing files
|
|
218
|
-
--force Show or perform the channel-owned action even when current
|
|
219
|
-
|
|
220
|
-
Only an official standalone install with a valid adjacent xcsh-install.json
|
|
221
|
-
receipt can replace itself. Homebrew, apt, npm, Bun, Windows installer, and MDM
|
|
222
|
-
installs print their exact owner-managed instruction and perform no update.
|
|
223
|
-
Unknown or conflicting provenance is blocked without changing the installation.
|
|
224
|
-
|
|
225
|
-
Short -f means --filename for xcsh update. Use xcsh self-update -f for the
|
|
226
|
-
short executable force form. Executable and resource flags cannot be mixed.
|
|
227
|
-
`);
|
|
228
|
-
}
|
|
@@ -157,7 +157,7 @@ function recommendationFor(channel: Exclude<InstallChannel, "unknown">, evidence
|
|
|
157
157
|
evidence,
|
|
158
158
|
};
|
|
159
159
|
case "standalone":
|
|
160
|
-
return { channel, action: "self-update", command: "xcsh update", evidence };
|
|
160
|
+
return { channel, action: "self-update", command: "xcsh self-update", evidence };
|
|
161
161
|
case "windows-installer":
|
|
162
162
|
return { channel, action: "external-command", command: WINDOWS_INSTALL_COMMAND, evidence };
|
|
163
163
|
}
|
|
@@ -270,7 +270,7 @@ export function formatUpdateRecommendation(recommendation: UpdateRecommendation)
|
|
|
270
270
|
case "managed":
|
|
271
271
|
return "Managed by your organization; request an MDM deployment.\nNo update was performed.";
|
|
272
272
|
case "self-update":
|
|
273
|
-
return "This official standalone installation can update itself with: xcsh update";
|
|
273
|
+
return "This official standalone installation can update itself with: xcsh self-update";
|
|
274
274
|
case "blocked":
|
|
275
275
|
return `Update blocked: ${recommendation.evidence}. Reinstall using the documented installation channel that owns this executable.`;
|
|
276
276
|
}
|
|
@@ -280,7 +280,7 @@ export function formatStartupUpdateNotice(version: string, recommendation: Updat
|
|
|
280
280
|
const prefix = `Update available: v${version} — `;
|
|
281
281
|
if (recommendation.action === "external-command") return `${prefix}run: ${recommendation.command}`;
|
|
282
282
|
if (recommendation.action === "managed") return `${prefix}managed by your organization; request an MDM deployment`;
|
|
283
|
-
if (recommendation.action === "self-update") return `${prefix}run: xcsh update`;
|
|
283
|
+
if (recommendation.action === "self-update") return `${prefix}run: xcsh self-update`;
|
|
284
284
|
return `${prefix}update blocked: ${recommendation.evidence}`;
|
|
285
285
|
}
|
|
286
286
|
|
package/src/commands/update.ts
CHANGED
|
@@ -1,44 +1,22 @@
|
|
|
1
|
-
import { CliUsageError, Command,
|
|
1
|
+
import { CliUsageError, Command, parseCommandArgv } from "@f5-sales-demo/pi-utils/cli";
|
|
2
2
|
import { runResourceCli } from "../cli/resource-cli";
|
|
3
|
-
import { runUpdateCommand } from "../cli/update-cli";
|
|
4
|
-
import { initTheme } from "../modes/theme/theme";
|
|
5
3
|
import { manifestResourceFlags } from "./resource-flags";
|
|
6
4
|
|
|
7
|
-
const updateFlags = {
|
|
8
|
-
...manifestResourceFlags,
|
|
9
|
-
force: Flags.boolean({
|
|
10
|
-
description: "Force executable update (short -f is reserved for resource manifests)",
|
|
11
|
-
default: false,
|
|
12
|
-
}),
|
|
13
|
-
check: Flags.boolean({ char: "c", description: "Check for executable updates without installing", default: false }),
|
|
14
|
-
};
|
|
15
|
-
|
|
16
5
|
type ResourceOutputFormat = "json" | "yaml" | "table" | "wide";
|
|
17
6
|
|
|
18
|
-
export type UpdateInvocation =
|
|
19
|
-
|
|
20
|
-
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
resultFile: string | undefined;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
function explicitlyRequestsDefaultOutput(argv: readonly string[]): boolean {
|
|
31
|
-
return argv.some(arg => arg === "--output" || arg.startsWith("--output=") || arg === "-o");
|
|
32
|
-
}
|
|
7
|
+
export type UpdateInvocation = {
|
|
8
|
+
mode: "resource";
|
|
9
|
+
filenames: string[] | undefined;
|
|
10
|
+
namespace: string | undefined;
|
|
11
|
+
outputFormat: ResourceOutputFormat;
|
|
12
|
+
recursive: boolean;
|
|
13
|
+
dryRun: "client" | undefined;
|
|
14
|
+
resultFile: string | undefined;
|
|
15
|
+
};
|
|
33
16
|
|
|
34
|
-
/**
|
|
17
|
+
/** Parse the resource-update command before it can perform I/O. */
|
|
35
18
|
export function parseUpdateInvocation(argv: readonly string[]): UpdateInvocation {
|
|
36
|
-
|
|
37
|
-
throw new CliUsageError(
|
|
38
|
-
"Ambiguous -f: use 'xcsh update --force' or 'xcsh self-update -f' for executable updates; otherwise provide a resource manifest",
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
const parsed = parseCommandArgv(argv, { flags: updateFlags });
|
|
19
|
+
const parsed = parseCommandArgv(argv, { flags: manifestResourceFlags });
|
|
42
20
|
if (parsed.argv.length > 0) {
|
|
43
21
|
throw new CliUsageError(`Unexpected argument${parsed.argv.length === 1 ? "" : "s"}: ${parsed.argv.join(" ")}`);
|
|
44
22
|
}
|
|
@@ -50,25 +28,7 @@ export function parseUpdateInvocation(argv: readonly string[]): UpdateInvocation
|
|
|
50
28
|
recursive: boolean;
|
|
51
29
|
"dry-run"?: "client";
|
|
52
30
|
"result-file"?: string;
|
|
53
|
-
force: boolean;
|
|
54
|
-
check: boolean;
|
|
55
31
|
};
|
|
56
|
-
const executableRequested = flags.force || flags.check;
|
|
57
|
-
const resourceRequested =
|
|
58
|
-
flags.filename !== undefined ||
|
|
59
|
-
flags.namespace !== undefined ||
|
|
60
|
-
flags.recursive ||
|
|
61
|
-
flags["dry-run"] !== undefined ||
|
|
62
|
-
flags["result-file"] !== undefined ||
|
|
63
|
-
flags.output !== "table" ||
|
|
64
|
-
explicitlyRequestsDefaultOutput(argv);
|
|
65
|
-
|
|
66
|
-
if (executableRequested && resourceRequested) {
|
|
67
|
-
throw new CliUsageError("update cannot combine executable-update and resource-update flags");
|
|
68
|
-
}
|
|
69
|
-
if (!resourceRequested) {
|
|
70
|
-
return { mode: "executable", force: flags.force, check: flags.check };
|
|
71
|
-
}
|
|
72
32
|
return {
|
|
73
33
|
mode: "resource",
|
|
74
34
|
filenames: flags.filename,
|
|
@@ -81,24 +41,15 @@ export function parseUpdateInvocation(argv: readonly string[]): UpdateInvocation
|
|
|
81
41
|
}
|
|
82
42
|
|
|
83
43
|
export default class Update extends Command {
|
|
84
|
-
static description = "Update
|
|
85
|
-
static flags =
|
|
44
|
+
static description = "Update F5 Distributed Cloud resources from manifests";
|
|
45
|
+
static flags = manifestResourceFlags;
|
|
86
46
|
static examples = [
|
|
87
|
-
"xcsh update # update the executable",
|
|
88
|
-
"xcsh update --check # check the executable version",
|
|
89
|
-
"xcsh update --force # force an executable reinstall",
|
|
90
|
-
"xcsh self-update -f # short force form for the executable",
|
|
91
47
|
"xcsh update -f manifest.yaml # update resources from a manifest",
|
|
48
|
+
"xcsh update -f manifests/ -R # update resources from a manifest directory",
|
|
92
49
|
];
|
|
93
50
|
|
|
94
51
|
async run(): Promise<void> {
|
|
95
52
|
const invocation = parseUpdateInvocation(this.argv);
|
|
96
|
-
if (invocation.mode === "executable") {
|
|
97
|
-
await initTheme();
|
|
98
|
-
const exitCode = await runUpdateCommand({ force: invocation.force, check: invocation.check });
|
|
99
|
-
if (exitCode !== 0) process.exitCode = exitCode;
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
53
|
await runResourceCli({
|
|
103
54
|
operation: "update",
|
|
104
55
|
filenames: invocation.filenames,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
const builtinMarketplaceSnapshot =
|
|
2
|
-
'{\n "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",\n "name": "f5-sales-demo-marketplace",\n "version": "1.0.0",\n "metadata": {\n "description": "Claude Code plugins for f5-sales-demo documentation repositories"\n },\n "owner": {\n "name": "f5-sales-demo",\n "url": "https://github.com/f5-sales-demo"\n },\n "plugins": [\n {\n "name": "docs-tools",\n "description": "MDX content validation and review tools for f5-sales-demo docs repos",\n "version": "1.1.6",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/docs-tools",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/docs-tools",\n "category": "productivity",\n "keywords": ["mdx", "documentation", "validation", "starlight", "astro"],\n "tags": ["docs", "linting", "content-review", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["Documentation content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "sales-engineer",\n "description": "Sales Engineer persona framework for F5 XC demo repositories — demo execution, environment operations, presentation, Q&A, post-session debrief",\n "version": "1.0.12",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/sales-engineer",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/sales-engineer",\n "category": "productivity",\n "keywords": ["sales-engineer", "demo", "persona", "presentation", "f5xc"],\n "tags": ["demo", "sales", "persona", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["Sales engineering content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "docs-pipeline",\n "description": "Documentation pipeline architecture — config ownership, release dispatch chain, content authoring, managed files, local preview",\n "version": "1.0.6",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/docs-pipeline",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/docs-pipeline",\n "category": "productivity",\n "keywords": ["docs", "pipeline", "astro", "starlight", "content", "authoring"],\n "tags": ["docs", "pipeline", "content", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["Documentation pipeline content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "brand",\n "description": "F5 corporate branding enforcement — colors, typography, logos, icons, accessibility, and visual identity standards across all content types",\n "version": "1.0.6",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/brand",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/brand",\n "category": "productivity",\n "keywords": ["brand", "design-system", "colors", "typography", "accessibility"],\n "tags": ["brand", "design", "visual-identity", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["Brand guidance content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "meddpicc",\n "description": "MEDDPICC sales qualification and deal-execution framework — evidence-based deal management, stakeholder mapping, mutual action plans, and forecast integrity for complex enterprise B2B sales",\n "version": "7.5.9",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/meddpicc",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/meddpicc",\n "category": "productivity",\n "keywords": [\n "meddpicc",\n "sales-qualification",\n "deal-management",\n "enterprise-sales",\n "forecast",\n "champion",\n "economic-buyer",\n "mutual-action-plan",\n "f5xc"\n ],\n "tags": ["sales", "qualification", "deal-management", "forecast", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["MEDDPICC content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "devcontainer",\n "description": "Container awareness — tool catalog, self-identity, self-diagnosis, and maintenance for the f5-sales-demo devcontainer",\n "version": "1.2.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/devcontainer",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/devcontainer",\n "category": "productivity",\n "keywords": ["devcontainer", "tools", "catalog", "cli", "inventory", "container"],\n "tags": ["devcontainer", "tools", "catalog", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["devcontainer"],\n "requirements": ["A supported development container runtime"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "platform",\n "description": "Provider-neutral F5 Distributed Cloud Secure Mesh Site v2 capabilities, configuration, bootstrap, and status tools",\n "version": "6.0.1",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/platform",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/platform",\n "category": "productivity",\n "keywords": [\n "console",\n "browser",\n "automation",\n "azure-sso",\n "chrome-devtools",\n "f5xc",\n "api",\n "rest",\n "platform",\n "openapi",\n "crud",\n "spec-aware"\n ],\n "tags": ["console", "browser", "automation", "f5xc", "api", "platform", "openapi"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["platform"],\n "requirements": ["F5 Distributed Cloud API URL and token environment variables"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "osint-framework",\n "description": "OSINT Framework tool catalog and investigation skills — 1,064 free intelligence-gathering tools across 34 categories, mapped from osintframework.com. Category-based skills, executable investigation pipelines, CLI tool execution, and OPSEC-aware workflows.",\n "version": "1.0.8",\n "author": {\n "name": "f5-sales-demo"\n },\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/osint-framework",\n "keywords": ["osint", "reconnaissance", "intelligence", "investigation", "security"],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/osint-framework",\n "category": "security",\n "tags": ["osint", "recon", "security", "intelligence"],\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["OSINT framework content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "firecrawl",\n "description": "Local self-hosted firecrawl web scraping — scrape, crawl, and map websites via the local firecrawl API on port 3002. No API keys, no subscriptions, fully open-source.",\n "version": "1.2.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/firecrawl",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/firecrawl",\n "category": "productivity",\n "keywords": ["firecrawl", "scrape", "crawl", "web-scraping", "markdown", "self-hosted", "local", "open-source"],\n "tags": ["firecrawl", "scraping", "web", "local"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["firecrawl"],\n "requirements": ["A reachable local Firecrawl service"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "salesforce",\n "description": "Salesforce pipeline intelligence with shared lifecycle setup, account discovery, context, and reporting tools",\n "version": "1.5.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/salesforce",\n "keywords": [\n "salesforce",\n "sf",\n "apex",\n "lwc",\n "soql",\n "metadata",\n "deploy",\n "testing",\n "sfdx",\n "agentforce",\n "pipeline",\n "xcsh"\n ],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/salesforce",\n "category": "development",\n "tags": ["salesforce", "development", "cli", "crm", "xcsh-extension"],\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["salesforce"],\n "requirements": ["Salesforce CLI", "An authenticated default Salesforce org"],\n "setupRequired": true,\n "collectedData": ["accounts", "identifiers", "business_profile"],\n "pluginDependencies": []\n }\n },\n {\n "name": "cloudstatus",\n "description": "Live cloud status and Internet network intelligence for xcsh — current incidents, routing, registration, RPKI, peering, facilities, F5 Regional Edge evidence, and bounded path diagnostics",\n "version": "1.7.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/cloudstatus",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/cloudstatus",\n "category": "productivity",\n "keywords": [\n "status",\n "monitoring",\n "incidents",\n "maintenance",\n "statuspage",\n "operational-intelligence",\n "network-intelligence",\n "bgp",\n "rdap",\n "rpki",\n "routing",\n "location",\n "peeringdb",\n "facilities",\n "f5xc",\n "atlassian"\n ],\n "tags": ["status", "network-intelligence", "routing", "peering", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "on_demand",\n "integrations": ["cloudstatus"],\n "requirements": ["Network access when a cloud-status command is invoked"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "azure",\n "description": "Azure CLI integration and deterministic F5 Customer Edge discovery, planning, lifecycle, and diagnostics",\n "version": "4.4.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/azure",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/azure",\n "category": "development",\n "keywords": ["azure", "az", "cloud", "f5xc", "customer-edge", "secure-mesh-site"],\n "tags": ["azure", "cloud", "f5xc", "customer-edge", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["azure"],\n "requirements": ["Azure CLI", "An authenticated Azure account"],\n "setupRequired": true,\n "collectedData": ["accounts"],\n "pluginDependencies": ["platform"]\n }\n },\n {\n "name": "aws",\n "description": "AWS CLI integration and deterministic F5 Secure Mesh Site v2 Customer Edge discovery, planning, lifecycle, and diagnostics",\n "version": "2.1.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/aws",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/aws",\n "category": "development",\n "keywords": ["aws", "amazon", "cloud", "f5xc", "customer-edge", "secure-mesh-site", "tgw", "nlb"],\n "tags": ["aws", "cloud", "f5xc", "customer-edge", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["aws"],\n "requirements": ["AWS CLI", "AWS credentials or an authenticated SSO profile"],\n "setupRequired": true,\n "collectedData": ["accounts"],\n "pluginDependencies": ["platform"]\n }\n },\n {\n "name": "kvm",\n "description": "Dual-NIC KVM Secure Mesh Site v2 with isolated SLO, home-LAN SLI, inside VIP, and rollback-protected host preparation",\n "version": "3.0.4",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/kvm",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/kvm",\n "category": "development",\n "keywords": ["kvm", "libvirt", "qemu", "f5xc", "customer-edge", "secure-mesh-site", "home-lan", "terraform"],\n "tags": ["kvm", "libvirt", "f5xc", "customer-edge", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["kvm"],\n "requirements": [\n "Terraform CLI",\n "libvirt and qemu system access",\n "curl",\n "F5 Distributed Cloud Platform integration"\n ],\n "setupRequired": true,\n "setupAuthorization": "install",\n "collectedData": [],\n "pluginDependencies": ["platform"]\n }\n },\n {\n "name": "gcloud",\n "description": "Google Cloud CLI integration — container-adapted auth, context injection, CLI operator agent, token expiry detection, and welcome screen status",\n "version": "1.3.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/gcloud",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/gcloud",\n "category": "development",\n "keywords": ["gcloud", "google", "cloud"],\n "tags": ["gcloud", "google", "cloud", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["gcloud"],\n "requirements": ["Google Cloud CLI", "An authenticated Google Cloud account"],\n "setupRequired": true,\n "collectedData": ["accounts"],\n "pluginDependencies": []\n }\n },\n {\n "name": "gitlab",\n "description": "GitLab CLI integration with shared lifecycle readiness, profile discovery, and issue management tools",\n "version": "1.3.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "keywords": ["gitlab", "glab", "issues", "git"],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/gitlab",\n "category": "development",\n "tags": ["gitlab", "development", "cli", "xcsh-extension"],\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/gitlab",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["gitlab"],\n "requirements": ["GitLab CLI", "An authenticated GitLab account"],\n "setupRequired": true,\n "collectedData": ["accounts"],\n "pluginDependencies": []\n }\n },\n {\n "name": "github",\n "description": "GitHub and Git operations with typed lifecycle stages, normalized evidence, and advisory governance",\n "version": "3.1.1",\n "author": {\n "name": "f5-sales-demo"\n },\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/github",\n "keywords": ["github", "gh", "git", "pr", "issues", "ci", "workflow", "git-sops", "github-ops"],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/github",\n "category": "development",\n "tags": ["github", "development", "cli", "workflow", "xcsh-extension"],\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["github", "github_email"],\n "requirements": ["GitHub CLI", "An authenticated GitHub account"],\n "setupRequired": true,\n "setupAuthorization": "install",\n "collectedData": ["accounts", "email", "identifiers", "sameAs"],\n "pluginDependencies": []\n }\n },\n {\n "name": "herdr",\n "description": "Install and operate the stable F5 Herdr fork with verified native xcsh health, explicit pairing, and complete pane-control guidance.",\n "version": "1.1.3",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/herdr",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "extensions": ["extensions/integration.ts"],\n "xcsh": {\n "name": "Herdr",\n "version": "1.1.3"\n },\n "source": "./plugins/herdr",\n "category": "development",\n "keywords": ["herdr", "terminal", "multiplexer", "panes", "agents"],\n "tags": ["terminal", "orchestration", "agents", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["herdr"],\n "requirements": [\n "Supported 64-bit Linux, macOS, or Windows host",\n "HTTPS access to the f5-sales-demo/herdr stable manifest and release"\n ],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "asm-migration",\n "description": "Deterministic BIG-IP ASM conversion and guarded F5 Distributed Cloud deployment",\n "version": "2.1.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/asm-migration",\n "keywords": ["asm", "waf", "migration", "f5xc", "xcsh-extension"],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/asm-migration",\n "category": "security",\n "tags": ["asm", "waf", "security", "migration", "f5xc"],\n "recommended": false,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["asm_migration"],\n "requirements": ["ASM migration runtime dependencies", "F5 Distributed Cloud Platform integration"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": ["platform"]\n }\n },\n {\n "name": "terraform",\n "description": "Senior DevOps Infrastructure-as-Code plugin providing HashiCorp Registry proactive version checks, HCL authoring, testing frameworks, and troubleshooting playbooks.",\n "version": "2.1.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/terraform",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/terraform",\n "category": "development",\n "keywords": ["terraform", "hcl", "iac", "devops", "hashicorp", "testing", "troubleshooting"],\n "tags": ["terraform", "iac", "devops", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["terraform"],\n "requirements": ["Terraform CLI"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "xorg",\n "version": "1.1.8",\n "description": "Ubuntu 24.04 Xorg desktop automation substrate",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "extensions": ["extensions/integration.ts"],\n "xcsh": {\n "name": "Xorg",\n "version": "1.1.8"\n },\n "source": "./plugins/xorg",\n "category": "development",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/xorg",\n "keywords": ["xorg", "at-spi", "xtest", "pipewire"],\n "tags": ["linux", "desktop", "automation"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["xorg"],\n "requirements": ["Ubuntu 24.04 with passwordless sudo"],\n "setupRequired": true,\n "setupAuthorization": "install",\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "zoom",\n "version": "1.0.5",\n "description": "Verified Zoom Workplace control through public xorgctl JSON",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "extensions": ["extensions/integration.ts"],\n "xcsh": {\n "name": "Zoom",\n "version": "1.0.5"\n },\n "source": "./plugins/zoom",\n "category": "productivity",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/zoom",\n "keywords": ["zoom", "meeting", "accessibility", "virtual-camera"],\n "tags": ["zoom", "meeting", "automation"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["zoom"],\n "requirements": ["Ubuntu 24.04", "Zoom Workplace", "Xorg plugin"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": ["xorg"]\n }\n },\n {\n "name": "ghostty",\n "version": "1.0.2",\n "description": "Curated Linux Ghostty setup for Xorg and Herdr terminal sessions",\n "license": "MIT",\n "author": {\n "name": "f5-sales-demo"\n },\n "extensions": ["extensions/integration.ts"],\n "xcsh": {\n "name": "Ghostty",\n "version": "1.0.2"\n },\n "source": "./plugins/ghostty",\n "category": "development",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/ghostty",\n "keywords": ["ghostty", "terminal", "xorg", "herdr"],\n "tags": ["linux", "terminal", "xorg"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["ghostty"],\n "requirements": ["Ubuntu Linux", "Xorg and Herdr marketplace plugins"],\n "setupRequired": true,\n "setupAuthorization": "install",\n "collectedData": [],\n "pluginDependencies": ["xorg", "herdr"]\n }\n }\n ]\n}\n';
|
|
2
|
+
'{\n "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",\n "name": "f5-sales-demo-marketplace",\n "version": "1.0.0",\n "metadata": {\n "description": "Claude Code plugins for f5-sales-demo documentation repositories"\n },\n "owner": {\n "name": "f5-sales-demo",\n "url": "https://github.com/f5-sales-demo"\n },\n "plugins": [\n {\n "name": "docs-tools",\n "description": "MDX content validation and review tools for f5-sales-demo docs repos",\n "version": "1.1.6",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/docs-tools",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/docs-tools",\n "category": "productivity",\n "keywords": ["mdx", "documentation", "validation", "starlight", "astro"],\n "tags": ["docs", "linting", "content-review", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["Documentation content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "sales-engineer",\n "description": "Sales Engineer persona framework for F5 XC demo repositories — demo execution, environment operations, presentation, Q&A, post-session debrief",\n "version": "1.0.12",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/sales-engineer",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/sales-engineer",\n "category": "productivity",\n "keywords": ["sales-engineer", "demo", "persona", "presentation", "f5xc"],\n "tags": ["demo", "sales", "persona", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["Sales engineering content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "docs-pipeline",\n "description": "Documentation pipeline architecture — config ownership, release dispatch chain, content authoring, managed files, local preview",\n "version": "1.0.6",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/docs-pipeline",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/docs-pipeline",\n "category": "productivity",\n "keywords": ["docs", "pipeline", "astro", "starlight", "content", "authoring"],\n "tags": ["docs", "pipeline", "content", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["Documentation pipeline content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "brand",\n "description": "F5 corporate branding enforcement — colors, typography, logos, icons, accessibility, and visual identity standards across all content types",\n "version": "1.0.6",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/brand",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/brand",\n "category": "productivity",\n "keywords": ["brand", "design-system", "colors", "typography", "accessibility"],\n "tags": ["brand", "design", "visual-identity", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["Brand guidance content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "meddpicc",\n "description": "MEDDPICC sales qualification and deal-execution framework — evidence-based deal management, stakeholder mapping, mutual action plans, and forecast integrity for complex enterprise B2B sales",\n "version": "7.5.9",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/meddpicc",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/meddpicc",\n "category": "productivity",\n "keywords": [\n "meddpicc",\n "sales-qualification",\n "deal-management",\n "enterprise-sales",\n "forecast",\n "champion",\n "economic-buyer",\n "mutual-action-plan",\n "f5xc"\n ],\n "tags": ["sales", "qualification", "deal-management", "forecast", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["MEDDPICC content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "devcontainer",\n "description": "Container awareness — tool catalog, self-identity, self-diagnosis, and maintenance for the f5-sales-demo devcontainer",\n "version": "1.2.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/devcontainer",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/devcontainer",\n "category": "productivity",\n "keywords": ["devcontainer", "tools", "catalog", "cli", "inventory", "container"],\n "tags": ["devcontainer", "tools", "catalog", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["devcontainer"],\n "requirements": ["A supported development container runtime"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "platform",\n "description": "Provider-neutral F5 Distributed Cloud Secure Mesh Site v2 capabilities, configuration, bootstrap, and status tools",\n "version": "6.0.1",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/platform",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/platform",\n "category": "productivity",\n "keywords": [\n "console",\n "browser",\n "automation",\n "azure-sso",\n "mcp",\n "chrome-devtools",\n "f5xc",\n "api",\n "rest",\n "platform",\n "openapi",\n "crud",\n "spec-aware"\n ],\n "tags": ["console", "browser", "automation", "f5xc", "api", "platform", "openapi"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["platform"],\n "requirements": ["F5 Distributed Cloud API URL and token environment variables"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "osint-framework",\n "description": "OSINT Framework tool catalog and investigation skills — 1,064 free intelligence-gathering tools across 34 categories, mapped from osintframework.com. Category-based skills, executable investigation pipelines, CLI tool execution, and OPSEC-aware workflows.",\n "version": "1.0.8",\n "author": {\n "name": "f5-sales-demo"\n },\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/osint-framework",\n "keywords": ["osint", "reconnaissance", "intelligence", "investigation", "security"],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/osint-framework",\n "category": "security",\n "tags": ["osint", "recon", "security", "intelligence"],\n "lifecycle": {\n "mode": "content",\n "integrations": [],\n "requirements": ["OSINT framework content only"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "firecrawl",\n "description": "Local self-hosted firecrawl web scraping — scrape, crawl, and map websites via the local firecrawl API on port 3002. No API keys, no subscriptions, fully open-source.",\n "version": "1.2.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/firecrawl",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/firecrawl",\n "category": "productivity",\n "keywords": ["firecrawl", "scrape", "crawl", "web-scraping", "markdown", "self-hosted", "local", "open-source"],\n "tags": ["firecrawl", "scraping", "web", "local"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["firecrawl"],\n "requirements": ["A reachable local Firecrawl service"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "salesforce",\n "description": "Salesforce pipeline intelligence with shared lifecycle setup, account discovery, context, and reporting tools",\n "version": "1.5.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/salesforce",\n "keywords": [\n "salesforce",\n "sf",\n "apex",\n "lwc",\n "soql",\n "metadata",\n "deploy",\n "testing",\n "sfdx",\n "agentforce",\n "pipeline",\n "xcsh"\n ],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/salesforce",\n "category": "development",\n "tags": ["salesforce", "development", "cli", "crm", "xcsh-extension"],\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["salesforce"],\n "requirements": ["Salesforce CLI", "An authenticated default Salesforce org"],\n "setupRequired": true,\n "collectedData": ["accounts", "identifiers", "business_profile"],\n "pluginDependencies": []\n }\n },\n {\n "name": "cloudstatus",\n "description": "Live cloud status and Internet network intelligence for xcsh — current incidents, routing, registration, RPKI, peering, facilities, F5 Regional Edge evidence, and bounded path diagnostics",\n "version": "1.7.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/cloudstatus",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/cloudstatus",\n "category": "productivity",\n "keywords": [\n "status",\n "monitoring",\n "incidents",\n "maintenance",\n "statuspage",\n "operational-intelligence",\n "network-intelligence",\n "bgp",\n "rdap",\n "rpki",\n "routing",\n "location",\n "peeringdb",\n "facilities",\n "f5xc",\n "atlassian"\n ],\n "tags": ["status", "network-intelligence", "routing", "peering", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "on_demand",\n "integrations": ["cloudstatus"],\n "requirements": ["Network access when a cloud-status command is invoked"],\n "setupRequired": false,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "azure",\n "description": "Azure CLI integration and deterministic F5 Customer Edge discovery, planning, lifecycle, and diagnostics",\n "version": "4.4.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/azure",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/azure",\n "category": "development",\n "keywords": ["azure", "az", "cloud", "f5xc", "customer-edge", "secure-mesh-site"],\n "tags": ["azure", "cloud", "f5xc", "customer-edge", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["azure"],\n "requirements": ["Azure CLI", "An authenticated Azure account"],\n "setupRequired": true,\n "collectedData": ["accounts"],\n "pluginDependencies": ["platform"]\n }\n },\n {\n "name": "aws",\n "description": "AWS CLI integration and deterministic F5 Secure Mesh Site v2 Customer Edge discovery, planning, lifecycle, and diagnostics",\n "version": "2.1.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/aws",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/aws",\n "category": "development",\n "keywords": ["aws", "amazon", "cloud", "f5xc", "customer-edge", "secure-mesh-site", "tgw", "nlb"],\n "tags": ["aws", "cloud", "f5xc", "customer-edge", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["aws"],\n "requirements": ["AWS CLI", "AWS credentials or an authenticated SSO profile"],\n "setupRequired": true,\n "collectedData": ["accounts"],\n "pluginDependencies": ["platform"]\n }\n },\n {\n "name": "kvm",\n "description": "Dual-NIC KVM Secure Mesh Site v2 with isolated SLO, home-LAN SLI, inside VIP, and rollback-protected host preparation",\n "version": "3.0.4",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/kvm",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/kvm",\n "category": "development",\n "keywords": ["kvm", "libvirt", "qemu", "f5xc", "customer-edge", "secure-mesh-site", "home-lan", "terraform"],\n "tags": ["kvm", "libvirt", "f5xc", "customer-edge", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["kvm"],\n "requirements": [\n "Terraform CLI",\n "libvirt and qemu system access",\n "curl",\n "F5 Distributed Cloud Platform integration"\n ],\n "setupRequired": true,\n "setupAuthorization": "install",\n "collectedData": [],\n "pluginDependencies": ["platform"]\n }\n },\n {\n "name": "gcloud",\n "description": "Google Cloud CLI integration — container-adapted auth, context injection, CLI operator agent, token expiry detection, and welcome screen status",\n "version": "1.3.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/gcloud",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/gcloud",\n "category": "development",\n "keywords": ["gcloud", "google", "cloud"],\n "tags": ["gcloud", "google", "cloud", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["gcloud"],\n "requirements": ["Google Cloud CLI", "An authenticated Google Cloud account"],\n "setupRequired": true,\n "collectedData": ["accounts"],\n "pluginDependencies": []\n }\n },\n {\n "name": "gitlab",\n "description": "GitLab CLI integration with shared lifecycle readiness, profile discovery, and issue management tools",\n "version": "1.3.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "keywords": ["gitlab", "glab", "issues", "git"],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/gitlab",\n "category": "development",\n "tags": ["gitlab", "development", "cli", "xcsh-extension"],\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/gitlab",\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["gitlab"],\n "requirements": ["GitLab CLI", "An authenticated GitLab account"],\n "setupRequired": true,\n "collectedData": ["accounts"],\n "pluginDependencies": []\n }\n },\n {\n "name": "github",\n "description": "GitHub and Git operations with typed lifecycle stages, normalized evidence, and advisory governance",\n "version": "3.1.1",\n "author": {\n "name": "f5-sales-demo"\n },\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/github",\n "keywords": ["github", "gh", "git", "pr", "issues", "ci", "workflow", "git-sops", "github-ops"],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/github",\n "category": "development",\n "tags": ["github", "development", "cli", "workflow", "xcsh-extension"],\n "recommended": true,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["github", "github_email"],\n "requirements": ["GitHub CLI", "An authenticated GitHub account"],\n "setupRequired": true,\n "setupAuthorization": "install",\n "collectedData": ["accounts", "email", "identifiers", "sameAs"],\n "pluginDependencies": []\n }\n },\n {\n "name": "herdr",\n "description": "Install and operate the stable F5 Herdr fork with verified native xcsh health, explicit pairing, and complete pane-control guidance.",\n "version": "1.1.3",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/herdr",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "extensions": ["extensions/integration.ts"],\n "xcsh": {\n "name": "Herdr",\n "version": "1.1.3"\n },\n "source": "./plugins/herdr",\n "category": "development",\n "keywords": ["herdr", "terminal", "multiplexer", "panes", "agents"],\n "tags": ["terminal", "orchestration", "agents", "xcsh-extension"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["herdr"],\n "requirements": [\n "Supported 64-bit Linux, macOS, or Windows host",\n "HTTPS access to the f5-sales-demo/herdr stable manifest and release"\n ],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "asm-migration",\n "description": "Deterministic BIG-IP ASM conversion and guarded F5 Distributed Cloud deployment",\n "version": "2.1.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/asm-migration",\n "keywords": ["asm", "waf", "migration", "f5xc", "xcsh-extension"],\n "license": "Apache-2.0",\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "source": "./plugins/asm-migration",\n "category": "security",\n "tags": ["asm", "waf", "security", "migration", "f5xc"],\n "recommended": false,\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["asm_migration"],\n "requirements": ["ASM migration runtime dependencies", "F5 Distributed Cloud Platform integration"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": ["platform"]\n }\n },\n {\n "name": "terraform",\n "description": "Senior DevOps Infrastructure-as-Code plugin providing HashiCorp Registry proactive version checks, HCL authoring, testing frameworks, and troubleshooting playbooks.",\n "version": "2.1.0",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/terraform",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "source": "./plugins/terraform",\n "category": "development",\n "keywords": ["terraform", "hcl", "iac", "devops", "hashicorp", "testing", "troubleshooting"],\n "tags": ["terraform", "iac", "devops", "f5xc"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["terraform"],\n "requirements": ["Terraform CLI"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "xorg",\n "version": "1.1.9",\n "description": "Ubuntu 24.04 Xorg desktop automation substrate",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "extensions": ["extensions/integration.ts"],\n "xcsh": {\n "name": "Xorg",\n "version": "1.1.9"\n },\n "source": "./plugins/xorg",\n "category": "development",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/xorg",\n "keywords": ["xorg", "at-spi", "xtest", "pipewire"],\n "tags": ["linux", "desktop", "automation"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["xorg"],\n "requirements": ["Ubuntu 24.04 with passwordless sudo"],\n "setupRequired": true,\n "setupAuthorization": "install",\n "collectedData": [],\n "pluginDependencies": []\n }\n },\n {\n "name": "zoom",\n "version": "1.0.5",\n "description": "Verified Zoom Workplace control through public xorgctl JSON",\n "license": "Apache-2.0",\n "author": {\n "name": "f5-sales-demo"\n },\n "extensions": ["extensions/integration.ts"],\n "xcsh": {\n "name": "Zoom",\n "version": "1.0.5"\n },\n "source": "./plugins/zoom",\n "category": "productivity",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/zoom",\n "keywords": ["zoom", "meeting", "accessibility", "virtual-camera"],\n "tags": ["zoom", "meeting", "automation"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["zoom"],\n "requirements": ["Ubuntu 24.04", "Zoom Workplace", "Xorg plugin"],\n "setupRequired": true,\n "collectedData": [],\n "pluginDependencies": ["xorg"]\n }\n },\n {\n "name": "ghostty",\n "version": "1.0.2",\n "description": "Curated Linux Ghostty setup for Xorg and Herdr terminal sessions",\n "license": "MIT",\n "author": {\n "name": "f5-sales-demo"\n },\n "extensions": ["extensions/integration.ts"],\n "xcsh": {\n "name": "Ghostty",\n "version": "1.0.2"\n },\n "source": "./plugins/ghostty",\n "category": "development",\n "homepage": "https://github.com/f5-sales-demo/marketplace/tree/main/plugins/ghostty",\n "keywords": ["ghostty", "terminal", "xorg", "herdr"],\n "tags": ["linux", "terminal", "xorg"],\n "repository": "https://github.com/f5-sales-demo/marketplace",\n "lifecycle": {\n "mode": "integrated",\n "integrations": ["ghostty"],\n "requirements": ["Ubuntu Linux", "Xorg and Herdr marketplace plugins"],\n "setupRequired": true,\n "setupAuthorization": "install",\n "collectedData": [],\n "pluginDependencies": ["xorg", "herdr"]\n }\n }\n ]\n}\n';
|
|
3
3
|
|
|
4
4
|
export default builtinMarketplaceSnapshot;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"repository": "https://github.com/f5-sales-demo/marketplace",
|
|
3
3
|
"sourcePath": ".xcsh-plugin/marketplace.json",
|
|
4
|
-
"commit": "
|
|
5
|
-
"sha256": "
|
|
6
|
-
"capturedAt": "2026-09-
|
|
4
|
+
"commit": "5683fee44ba0c4552625e28967b2fd1a09eb62d5",
|
|
5
|
+
"sha256": "5fec43e8aa49520cdb4206b792e6508c2048c5c4d178841c2477595a8a33f803",
|
|
6
|
+
"capturedAt": "2026-09-27T22:31:32.091Z"
|
|
7
7
|
}
|
|
@@ -95,6 +95,48 @@ export function matchesBaselineCatalogDiscoveryTerm(term: string, values: readon
|
|
|
95
95
|
return values.some(value => normalizeApiCatalogDiscoveryTerm(value).includes(normalized));
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
function categoryDocuments(category: ApiCatalogCategory): ApiCatalogDiscoveryDocument[] {
|
|
99
|
+
const destination = `xcsh://api-catalog/${category.name}`;
|
|
100
|
+
if (category.operations.length === 0) {
|
|
101
|
+
return [
|
|
102
|
+
{
|
|
103
|
+
id: `category:${category.name}`,
|
|
104
|
+
categoryName: category.name,
|
|
105
|
+
markdown: [
|
|
106
|
+
`# ${category.displayName}`,
|
|
107
|
+
"",
|
|
108
|
+
`- Category: ${category.name}`,
|
|
109
|
+
`- Destination: ${destination}`,
|
|
110
|
+
"",
|
|
111
|
+
"## Operations",
|
|
112
|
+
"- None",
|
|
113
|
+
"",
|
|
114
|
+
].join("\n"),
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
}
|
|
118
|
+
return category.operations
|
|
119
|
+
.slice()
|
|
120
|
+
.sort((left, right) => left.operationId.localeCompare(right.operationId))
|
|
121
|
+
.map(operation => ({
|
|
122
|
+
id: `operation:${category.name}:${operation.operationId}`,
|
|
123
|
+
categoryName: category.name,
|
|
124
|
+
markdown: [
|
|
125
|
+
`# ${category.displayName}: ${operation.name}`,
|
|
126
|
+
"",
|
|
127
|
+
`- Category: ${category.name}`,
|
|
128
|
+
`- Destination: ${destination}`,
|
|
129
|
+
`- Operation: ${operation.name}`,
|
|
130
|
+
`- Alias: ${(operation.operationAliases ?? []).join(", ")}`,
|
|
131
|
+
`- Description: ${operation.description}`,
|
|
132
|
+
`- Method: ${operation.method.toUpperCase()}`,
|
|
133
|
+
`- Path: ${operation.path}`,
|
|
134
|
+
`- Operation ID: ${operation.operationId}`,
|
|
135
|
+
"",
|
|
136
|
+
].join("\n"),
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
|
|
98
140
|
function categoryDocument(category: ApiCatalogCategory): ApiCatalogDiscoveryDocument {
|
|
99
141
|
const destination = `xcsh://api-catalog/${category.name}`;
|
|
100
142
|
const operations = category.operations.flatMap(operation => [
|
|
@@ -105,7 +147,6 @@ function categoryDocument(category: ApiCatalogCategory): ApiCatalogDiscoveryDocu
|
|
|
105
147
|
` - Path: ${operation.path}`,
|
|
106
148
|
` - Operation ID: ${operation.operationId}`,
|
|
107
149
|
]);
|
|
108
|
-
|
|
109
150
|
return {
|
|
110
151
|
id: `category:${category.name}`,
|
|
111
152
|
categoryName: category.name,
|
|
@@ -139,6 +180,20 @@ export function buildApiCatalogDiscoveryCorpus(
|
|
|
139
180
|
};
|
|
140
181
|
}
|
|
141
182
|
|
|
183
|
+
/** Candidate-only operation granularity; authoritative results remain category URLs. */
|
|
184
|
+
export function buildApiOperationDiscoveryCorpus(
|
|
185
|
+
index: ApiCatalogIndex,
|
|
186
|
+
data: Readonly<Record<string, ApiCatalogCategory>>,
|
|
187
|
+
): ApiCatalogDiscoveryCorpus {
|
|
188
|
+
return {
|
|
189
|
+
catalogVersion: index.version,
|
|
190
|
+
documents: Object.values(data)
|
|
191
|
+
.slice()
|
|
192
|
+
.sort((left, right) => left.name.localeCompare(right.name))
|
|
193
|
+
.flatMap(categoryDocuments),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
|
|
142
197
|
export function fingerprintApiCatalogDiscoveryCorpus(
|
|
143
198
|
corpus: ApiCatalogDiscoveryCorpus,
|
|
144
199
|
sourceSha: string,
|
|
@@ -3,18 +3,20 @@ import path from "node:path";
|
|
|
3
3
|
import { rankQmdBm25CatalogDiscovery } from "./api-catalog-discovery";
|
|
4
4
|
import { QMD_API_CATALOG_PREBUILT_INDEX } from "./api-catalog-qmd-index.generated";
|
|
5
5
|
import type { ApiSpecIndex } from "./api-spec-types";
|
|
6
|
+
import {
|
|
7
|
+
buildKnowledgeSearchPlan,
|
|
8
|
+
classifyKnowledgeRequest,
|
|
9
|
+
type KnowledgeClassifierResource,
|
|
10
|
+
type KnowledgeSearchPlan,
|
|
11
|
+
} from "./knowledge-classifier";
|
|
6
12
|
|
|
7
|
-
export interface ApiCatalogPreflightResource {
|
|
8
|
-
readonly name: string;
|
|
9
|
-
readonly aliases: readonly string[];
|
|
10
|
-
readonly domain: string;
|
|
11
|
-
readonly categories: readonly string[];
|
|
12
|
-
}
|
|
13
|
+
export interface ApiCatalogPreflightResource extends KnowledgeClassifierResource {}
|
|
13
14
|
|
|
14
15
|
export interface ApiCatalogPreflightIntent {
|
|
15
16
|
readonly resource: string;
|
|
16
17
|
readonly domain: string;
|
|
17
18
|
readonly queries: readonly string[];
|
|
19
|
+
readonly structuredQuery?: KnowledgeSearchPlan;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
export interface ApiCatalogPreflightDestination {
|
|
@@ -45,16 +47,6 @@ interface RunApiCatalogPreflightOptions extends ApiCatalogPreflightOptions {
|
|
|
45
47
|
readonly rank?: (query: string) => Promise<readonly string[]>;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
|
-
const EXCLUDED_INTENT =
|
|
49
|
-
/\b(?:troubleshoot|debug|not working|returning\s+\d{3}|pricing|price|quote|licen[cs]ing|sales)\b/i;
|
|
50
|
-
const THIRD_PARTY_SCOPE = /\b(?:aws|amazon|azure|gcp|google cloud|kubernetes)\b/i;
|
|
51
|
-
const F5_XC_SCOPE = /\b(?:f5(?:\s+distributed\s+cloud)?|xc)\b/i;
|
|
52
|
-
const ANAPHORIC_RESOURCE = /\b(?:its|it|that|this)\b/i;
|
|
53
|
-
const DOCUMENTATION_ROUTE = /xcsh:\/\/documentation(?:\/|\?)/i;
|
|
54
|
-
const API_METADATA_INTENT =
|
|
55
|
-
/\b(?:endpoint|api\s+path|http\s+method|method|payload|request\s+body|required\s+fields?|enum|allowed\s+values?|constraints?|limits?|maximum|max(?:imum)?|minimum|min(?:imum)?|how\s+many|create|creates|creating|get|gets|list|lists|update|updates|replace|replaces|delete|deletes|clone|import)\b/i;
|
|
56
|
-
const EXPLICIT_API_INTENT = /\b(?:api|endpoint|method|payload|schema)\b/i;
|
|
57
|
-
|
|
58
50
|
let generatedResources: readonly ApiCatalogPreflightResource[] | undefined;
|
|
59
51
|
let generatedCatalogVersion: string | undefined;
|
|
60
52
|
|
|
@@ -67,10 +59,6 @@ function normalizedPhrase(value: string): string {
|
|
|
67
59
|
.replace(/\s+/g, " ");
|
|
68
60
|
}
|
|
69
61
|
|
|
70
|
-
function preferredAlias(resource: { name: string; aliases: readonly string[] }): string {
|
|
71
|
-
return normalizedPhrase(resource.aliases[0] ?? resource.name);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
62
|
function defaultAliases(name: string, descriptionShort?: string): string[] {
|
|
75
63
|
const canonical = normalizedPhrase(name);
|
|
76
64
|
const aliases = [normalizedPhrase(descriptionShort ?? ""), canonical].filter(Boolean);
|
|
@@ -97,56 +85,40 @@ function loadGeneratedMetadata(): { resources: readonly ApiCatalogPreflightResou
|
|
|
97
85
|
return { resources: generatedResources, catalogVersion: generatedCatalogVersion };
|
|
98
86
|
}
|
|
99
87
|
|
|
100
|
-
function crudVerb(prompt: string): string | undefined {
|
|
101
|
-
const value = normalizedPhrase(prompt);
|
|
102
|
-
if (/\b(?:create|creates|creating)\b/.test(value)) return "create";
|
|
103
|
-
if (/\b(?:get|gets|read|fetch)\b/.test(value)) return "get";
|
|
104
|
-
if (/\b(?:list|lists)\b/.test(value)) return "list";
|
|
105
|
-
if (/\b(?:update|updates)\b/.test(value)) return "update";
|
|
106
|
-
if (/\b(?:replace|replaces)\b/.test(value)) return "replace";
|
|
107
|
-
if (/\b(?:delete|deletes|remove)\b/.test(value)) return "delete";
|
|
108
|
-
if (/\bclone\b/.test(value)) return "clone";
|
|
109
|
-
if (/\bimport\b/.test(value)) return "import";
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
88
|
export function classifyApiCatalogPreflight(
|
|
114
89
|
prompt: string,
|
|
115
90
|
options: ApiCatalogPreflightOptions,
|
|
116
91
|
): ApiCatalogPreflightIntent | null {
|
|
117
|
-
if (!options.toolsEnabled || DOCUMENTATION_ROUTE.test(prompt) || EXCLUDED_INTENT.test(prompt)) return null;
|
|
118
|
-
if (THIRD_PARTY_SCOPE.test(prompt) && !F5_XC_SCOPE.test(prompt)) return null;
|
|
119
|
-
if (/\bterraform\b/i.test(prompt) && !EXPLICIT_API_INTENT.test(prompt)) return null;
|
|
120
|
-
if (!API_METADATA_INTENT.test(prompt)) return null;
|
|
121
|
-
|
|
122
92
|
const resources = options.resources ?? loadGeneratedMetadata().resources;
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
const
|
|
139
|
-
if (!
|
|
140
|
-
|
|
141
|
-
|
|
93
|
+
const previous = options.previousResource
|
|
94
|
+
? {
|
|
95
|
+
route: "api" as const,
|
|
96
|
+
confidence: 0.99,
|
|
97
|
+
resource: options.previousResource.resource,
|
|
98
|
+
domain: options.previousResource.domain,
|
|
99
|
+
constraints: { domain: options.previousResource.domain },
|
|
100
|
+
query:
|
|
101
|
+
options.previousResource.structuredQuery ??
|
|
102
|
+
buildKnowledgeSearchPlan(
|
|
103
|
+
"api",
|
|
104
|
+
options.previousResource.queries[0] ?? options.previousResource.resource,
|
|
105
|
+
),
|
|
106
|
+
}
|
|
107
|
+
: undefined;
|
|
108
|
+
const classified = classifyKnowledgeRequest(prompt, { toolsEnabled: options.toolsEnabled, resources, previous });
|
|
109
|
+
if (classified.route !== "api" || !classified.resource || !classified.domain) return null;
|
|
110
|
+
if (
|
|
111
|
+
options.previousResource &&
|
|
112
|
+
classified.resource === options.previousResource.resource &&
|
|
113
|
+
/\b(?:its|it|that|this|those|them|the same)\b/i.test(prompt)
|
|
114
|
+
) {
|
|
115
|
+
return options.previousResource;
|
|
142
116
|
}
|
|
143
|
-
|
|
144
|
-
const alias = preferredAlias(selected);
|
|
145
|
-
const verb = crudVerb(prompt);
|
|
146
117
|
return {
|
|
147
|
-
resource:
|
|
148
|
-
domain:
|
|
149
|
-
queries:
|
|
118
|
+
resource: classified.resource,
|
|
119
|
+
domain: classified.domain,
|
|
120
|
+
queries: classified.query.lex,
|
|
121
|
+
structuredQuery: classified.query,
|
|
150
122
|
};
|
|
151
123
|
}
|
|
152
124
|
|