Skip to content

Stable Build v0.9.0

Choose a tag to compare

@modesty modesty released this 17 Oct 21:24
· 3 commits to master since this release
4418275

v0.9.0 — AI Agent Skills Plugin, MCP SDK 2.3.1 & Native Test Runner

Highlights

  • Standalone AI Agent Skills (fluent-skillset) — Ships two new agent skills (fluent-cli and fluent-security-review) packaged as a cross-agent plugin (.claude-plugin/) for Claude Code, GitHub Copilot, Codex, Cursor, Windsurf, and other skill-enabled coding assistants — usable with or without the MCP server attached.
  • MCP SDK v2.3.1 Upgrade — Upgraded @modelcontextprotocol/server (and transitive @modelcontextprotocol/core) from 2.0.0 to 2.3.1, bringing stdio EOF connection teardown, in-flight process cancellation, and single-connection instance guards across both MCP protocol eras (2026-07-28 and 2025-11-25).
  • Node 22 LTS & Native Test Runner — Raised the runtime floor to Node.js >=22.23.2 / npm >=10.9.8, migrated all 47 test suites (918 tests) from Jest to Node's built-in node:test + node:assert/strict runner, and removed Jest, ts-node, and redundant Rollup plugins.
  • UI Action Snippets Repaired — Populated and build-validated all 10 previously blank ui-action snippets (0001–0010).

New Features: fluent-skillset Plugin & Skills (#37)

Added .claude-plugin/plugin.json and .claude-plugin/marketplace.json to distribute standalone ServiceNow Fluent skills under skills/:

  • fluent-cli (skills/fluent-cli/SKILLS.md) — Guides AI agents through npx @servicenow/sdk CLI workflows directly via bash without requiring an MCP server connection:
    • Project root discovery (now.config.json) and initial orientation (explain quickstart, fluent-language, keys-file).
    • Progressive, read-only documentation lookup (explain --list → --peek → full topic).
    • Live ServiceNow instance Table REST queries (query <table> -q '<encoded-query>' -o json).
  • fluent-security-review (skills/fluent-security-review/SKILLS.md) — Performs a comprehensive security audit across both Fluent (now.config.json, src/, metadata/) and classic ServiceNow XML (update/, unload/) or hybrid applications:
    • Evaluates all 46 ServiceNow security checks organized by impact: High (16 checks in references/high_impact.md), Medium (25 checks in references/medium_impact.md), and Low (5 checks in references/low_impact.md).
    • Outputs a structured Markdown report summarizing Exemplary Practices, prioritized Findings (P0–P4) with file/line locations and remediation snippets, and a final PASS / FAIL conclusion.

MCP Server & Resource Updates (#36)

  • Upgraded @modelcontextprotocol/server 2.0.0 → 2.3.1 (see doc/upgrade-mcp-2.3.1.md):
    • Stdio EOF lifecycle (2.1.0+): StdioServerTransport now closes cleanly on stdin EOF/close, fires onclose once, aborts in-flight command handlers, and terminates spawned CLI child processes.
    • Zero-ID cancellation (2.1.0+): Cancellation notifications now recognize JSON-RPC request IDs 0 and '' in addition to positive IDs.
    • Per-connection server isolation (2.3.0+): Enforces one active connection per McpServer instance (ALREADY_CONNECTED guard), handled seamlessly by FluentMcpServer.buildServer() across server/discover probes and legacy initialize fallbacks.
  • Fixed 10 ui-action code snippets (res/snippet/fluent_snippet_ui-action_0001.md through 0010.md):
    • Replaced 10 empty snippet files with complete, now-sdk build-validated examples covering server-side form buttons, client-side g_form scripts, form related links, form context menus, list banner buttons, list-choice bulk selection (g_list.getChecked()), server-side condition visibility, roles restrictions, primary button styling/ordering, and UI26 programmatic form actions (form: true).

Engine, Toolchain & Test Architecture (#35)

  • Node.js 22 LTS & TypeScript nodenext:
    • Updated engines to node >=22.23.2 and npm >=10.9.8 (.nvmrc pinned to 22.23.3, packageManager set to npm@12.2.0).
    • Aligned @types/node to 22.20.5 and updated tsconfig.json to "module": "nodenext" / "moduleResolution": "nodenext", removing deprecated node10 settings and baseUrl.
  • Migrated from Jest to Node's native test runner (node:test):
    • Ported all test suites to node:test and node:assert/strict with explicit opt-in fixtures (test/support/fixtures.ts, test/support/mockAssertions.ts) and native mock.module() / t.mock.method().
    • Added isolated test staging (scripts/stage-tests.mjs, scripts/run-native-tests.mjs) that compiles into .test-build/<stage>/ with a staged package.json and res/ layout, plus cross-platform child process-tree cleanup (scripts/process-tree.mjs) for one-shot, --coverage, and --watch runs.
    • Added test/server/stdioLifecycle.test.ts covering real stdio EOF teardown, ID 0 cancellation, and discovery-to-legacy fallback.
  • Dependency & build cleanup:
    • Removed jest, ts-jest, @types/jest, ts-node, @rollup/plugin-commonjs, @rollup/plugin-json, @rollup/plugin-node-resolve, and the redundant direct @modelcontextprotocol/core dependency (shrinking lockfile entries from 973 to 715 and eliminating transitive inflight / glob@7 deprecations).
    • Added scripts/clean-dist.mjs via prebuild / prebuild:dev hooks so builds always start from a clean dist/ directory.
    • Updated npm run dev and npm run inspect:dev to run from the compiled development bundle (dist/index.js) instead of ts-node.
  • CI/CD workflow (.github/workflows/ci.yml):
    • Upgraded to actions/checkout@v4 and actions/setup-node@v4 reading .nvmrc with npm ci.
    • Added master/main push triggers and full validation gates: lint, typecheck, typecheck:test, validate:specs, validate:instructs, build, and test.
  • Documentation (README.md, doc/inspector-examples.md, doc/upgrade-mcp-2.3.1.md):
    • Streamlined README.md with multi-agent skill installation instructions, condensed tool/resource reference tables, and updated development scripts.

Verification

  • 47 test files / 918 native tests passing (92.04% line coverage across loaded source files).
  • Resource validation: 75/75 API specs (validate:specs) and 75/75 authoring instructions (validate:instructs) pass; 110 snippets compile cleanly via now-sdk build (up from 100 after fixing all 10 ui-action snippets, with 0 unexpected failures and 0 skipped).
  • Live MCP Inspector 2.10.0 & dual-era stdio smoke: Verified all 17 tools, 224 resources, 332 resource-tool paths, and both prompts across MCP protocol revisions 2026-07-28 and 2025-11-25.