You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
review fixes: examples, integration.yml, integration test typecheck (#201)
Deep-review pass over the QF-10 workstream (#196, #197, #199) caught
multiple issues. All P0+P1 findings are addressed here in one PR.
Workflow correctness:
- npm pack: clean tarball dir before each run + use --json output to get
the exact filename instead of ls glob (avoids picking a stale .tgz).
- Logs ordering: capture docker logs BEFORE compose down (compose down
destroys the containers, so the previous step ran AFTER teardown and
always returned empty).
- Persist logs to disk + upload as actions/upload-artifact so failure
triage doesn't require re-running.
- npm install --prefer-offline --no-audit --no-fund — bound the example
smoke against npm registry flakes.
- timeout 30 → 60 for the basic example (fresh-runner cold-start budget).
- docker compose up -d --wait --wait-timeout 120 — let compose's own
healthcheck do the polling.
- concurrency.group on workflow — back-to-back pushes won't spawn
parallel docker stacks.
- Cron moved from Monday 06:00 UTC to Tuesday 06:00 UTC so failures land
during EU/IN working hours.
Type-safety gates:
- New tsconfig.tests.json that extends tsconfig.json (so strict + types
+ esModuleInterop are inherited rather than re-specified inline). The
PR-time integration-test typecheck step now uses this config — the
earlier inline `tsc --noEmit ...` flags were missing --strict, so
null/undefined/implicit-any drift could slip through.
- tsconfig.examples.json: defensive `outDir: ./.tsbuildinfo-examples` so
if anyone removes `noEmit` later, output goes somewhere obvious
instead of polluting `dist/`.
Examples (user-facing):
- Standardized all examples on `import { AxonFlow } from '@axonflow/sdk'`
(proxy-mode and wcp-retry-idempotency previously used `'../../src'`
which only worked when running inside the repo tree).
- examples/basic: removed the "Sandbox Mode" demonstration. The sandbox
client hard-codes `https://staging-eu.getaxonflow.com` (decommissioned
2026-04-09); the example would always fail at that step in any real
user environment AND in the live-integration smoke. The
AxonFlow.sandbox helper itself is unchanged in the SDK.
- examples/connectors: `tenant_id` now sourced from
AXONFLOW_TENANT_ID || AXONFLOW_CLIENT_ID. Real installations have
tenant_id and client_id as distinct values; the previous version
reused clientId, masking that semantics.
- examples/README.md: corrected the env-var table (was claiming
AXONFLOW_API_KEY / AXONFLOW_TENANT, but the examples actually read
AXONFLOW_CLIENT_ID / AXONFLOW_CLIENT_SECRET); switched runner
instructions from ts-node to tsx; added entries for the proxy-mode
and wcp-retry-idempotency examples that were previously undocumented.
Tests:
- tests/integration.test.ts: replaced two `fail('...')` calls with
`throw new Error('...')`. The bare `fail` global was removed in
jest 27+; the bundled jest 29 throws ReferenceError at runtime
rather than the descriptive message. PR-time tsc didn't catch it
because it's a runtime global.
- test/integration.test.ts (the older copy) removed: it pointed at
decommissioned staging-eu, used deprecated protect(), and had a
copy-pasted "VPC private endpoint" test that was identical to the
public one. tests/integration.test.ts is the canonical version.
- package.json `test:integration` script updated to drop the deleted
file.
CHANGELOG: Fixed-section entries for the example changes (user-facing).
CI / workflow / typecheck plumbing intentionally not in CHANGELOG per
feedback_changelog_no_internal_entries.md.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
12
12
-**`client.listProviders(options?)`** — list configured LLM providers and their per-provider health snapshot. Calls `GET /api/v1/llm-providers`. New `LLMProvider`, `LLMProviderHealth`, and `ListProvidersOptions` types in `@axonflow/sdk`. Supports `type` and `enabled` filters. Closes the parity gap with the Java SDK's `listLLMProviders()` and the Python SDK's `list_providers()`.
13
13
14
+
### Fixed
15
+
16
+
-**`examples/connectors/`** — `installConnector()` call now uses the correct snake-case `connector_id` field (was `connectorId`) and supplies the required `tenant_id` (now sourced from `AXONFLOW_TENANT_ID`, falling back to `AXONFLOW_CLIENT_ID`).
17
+
-**`examples/planning/`** — `PlanStep` field reference fixed: `step.dependsOn` (was `step.dependencies`).
18
+
-**`examples/proxy-mode/`** — replaced `client.executeQuery(...)` with `client.proxyLLMCall(...)` (the method was renamed in v6.0.0); removed the import of the `@internal``ExecuteQueryOptions` type.
19
+
-**`examples/basic/`, `examples/proxy-mode/`, `examples/README.md`** — replaced the decommissioned `https://staging-eu.getaxonflow.com` default endpoint with `http://localhost:8080` (the local docker-compose default). The staging-eu environment was torn down 2026-04-09.
20
+
-**`examples/basic/`** — removed the "Sandbox Mode" demonstration that constructed `AxonFlow.sandbox(...)`. The sandbox client hard-codes the decommissioned staging-eu endpoint internally and the example would always fail at that step. The sandbox helper itself is unchanged in the SDK.
21
+
-**`examples/README.md`** — corrected stale env-var docs: examples expect `AXONFLOW_CLIENT_ID` / `AXONFLOW_CLIENT_SECRET`, not `AXONFLOW_API_KEY` / `AXONFLOW_TENANT`. Updated runner instructions to use `tsx` (the examples no longer rely on `ts-node`).
22
+
-**All examples** — standardized on `import { AxonFlow } from '@axonflow/sdk'` (was mixed; some examples imported from `'../../src'` which only worked when copy-pasted inside the repo tree).
Minor release. Surfaces fields the AxonFlow agent has emitted since v7.1.0 (Plugin Batch 1) but the SDK didn't declare. Pure field-additions on existing methods — no new SDK methods, no breaking changes. Documented in OpenAPI via platform v7.4.3.
0 commit comments