okf-parser 0.45.4__tar.gz → 0.45.5__tar.gz
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.
- {okf_parser-0.45.4 → okf_parser-0.45.5}/Cargo.lock +2 -2
- {okf_parser-0.45.4 → okf_parser-0.45.5}/PKG-INFO +2 -2
- {okf_parser-0.45.4 → okf_parser-0.45.5}/README.md +1 -1
- okf_parser-0.45.5/changelog/0.45.5/scoped-npm-packages.md +9 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/native-engine.md +2 -2
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/releasing.md +9 -7
- okf_parser-0.45.5/native-npm-linux-x64/README.md +15 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/native-npm-linux-x64/package.json +2 -2
- {okf_parser-0.45.4 → okf_parser-0.45.5}/okf-engine/Cargo.toml +1 -1
- {okf_parser-0.45.4 → okf_parser-0.45.5}/pyproject.toml +1 -1
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0003-resumable-multi-registry-release.md +28 -7
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rust-core/Cargo.toml +2 -2
- {okf_parser-0.45.4 → okf_parser-0.45.5}/scripts/registry_state.py +10 -3
- {okf_parser-0.45.4 → okf_parser-0.45.5}/scripts/release_contract.py +14 -11
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_release_contract.py +19 -12
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/README.md +8 -8
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/package-lock.json +11 -11
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/package.json +3 -3
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/rust-core.ts +1 -1
- okf_parser-0.45.5/typescript/src/version.ts +1 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/README.md +6 -6
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/package-lock.json +13 -13
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/package.json +4 -4
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/src/declared.ts +1 -1
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/src/normalized.ts +1 -1
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/src/session.ts +1 -1
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/src/typed.ts +1 -1
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/test/duckdb.test.ts +2 -2
- {okf_parser-0.45.4 → okf_parser-0.45.5}/uv.lock +4 -4
- okf_parser-0.45.4/native-npm-linux-x64/README.md +0 -15
- okf_parser-0.45.4/typescript/src/version.ts +0 -1
- {okf_parser-0.45.4 → okf_parser-0.45.5}/.gitignore +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/Cargo.toml +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/action.yml +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/benchmarks/README.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/benchmarks/__init__.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/benchmarks/python_parser.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/benchmarks/results/2026-08-08-rust-mvp.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/benchmarks/results/2026-08-09-rust-e2e.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/benchmarks/rust-facts.mjs +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/benchmarks/rust_facts.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/benchmarks/typescript-parser.mjs +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.1.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.10.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.11.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.11.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.12.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.13.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.14.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.14.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.14.2.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.15.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.15.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.15.2.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.15.3.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.15.4.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.16.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.17.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.18.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.18.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.19.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.19.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.2.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.20.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.20.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.21.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.22.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.23.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.24.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.25.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.26.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.27.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.28.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.29.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.3.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.30.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.31.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.32.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.32.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.33.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.34.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.35.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.36.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.37.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.38.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.39.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.39.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.4.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.40.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.41.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.41.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.41.2.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.41.3.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.42.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.42.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.42.2.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.42.3.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.42.4.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.42.5.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.42.6.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.42.7.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.42.8.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.43.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.43.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.44.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.2.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.3/correct-0-45-2-notes.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.3/pep723-workflow-python.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.3/uv-first-release-validation.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.3/version-belongs-to-the-release.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/agent-first-search-rfc.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/atomic-import-writes.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/codebase-to-okf-lexical-containment.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/codebase-to-okf-local-import-resolution.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/codebase-to-okf-one-shot.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/codebase-to-okf-project-manifest.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/codebase-to-okf-self-describing-types.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/codebase-to-okf-skill.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/duckdb-extension-concepts-slice.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/duckdb-extension-read-surface.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/git-commit-envelope.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/projection-documents.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/referential-schema-export-embed-mode.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/referential-schema-export-key-mode.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/referential-schema-export.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/refs-depth-and-composite-keys.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/rfc-0015-canonical-markdown-ir.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/rfc0009-git-commits.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/rfc0010-native-duckdb-extension.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/rfc0011-tracked-migrations.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/rfc0015-rust-markdown-ast.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/rfc0017-fact-profile.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/rfc0018-projection-export.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.45.4/type-specifications.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.5.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.5.1.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.6.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.7.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.8.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/changelog/0.9.0.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/conformance/content-digests.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/conformance/exclusion.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/conformance/formatting.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/conformance/frontmatter.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/conformance/git-commit-messages.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/conformance/schema-inference.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/conformance/schema-output.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/conformance/type-spec-slugs.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/architecture.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/cli.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/graphql.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/architecture.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/benchmarkresult.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/documentation.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/procedure.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/project.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/release-note.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/release.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/rfc.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/skill.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/docs/types/spec.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/duckdb-extension/Cargo.toml +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/duckdb-extension/Makefile +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/duckdb-extension/README.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/duckdb-extension/src/lib.rs +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/duckdb-extension/test/knowledge/index.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/duckdb-extension/test/knowledge/node.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/examples/minimal/concepts/access-review.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/examples/minimal/concepts/onboarding.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/examples/minimal/index.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/examples/minimal/log.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/fastmcp.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/okf-engine/src/engine.rs +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/okf-engine/src/lib.rs +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/okf-engine/src/yaml.rs +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0001-python-model-codegen.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0002-typescript-sibling-package.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0004-gitignore-exclusion-semantics.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0005-relational-frontmatter-writes.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0006-declared-column-types.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0007-declared-relational-constraints.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0008-effect-aware-mcp-writes.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0009-git-commits-as-okf.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0010-native-duckdb-extension.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0011-tracked-migrations.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0015-canonical-rust-markdown-ast-and-typed-document-model.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0016-agent-first-bundle-search-and-retrieval.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0017-fact-profile.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0018-referential-schema-export-and-projections.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rfcs/0019-self-contained-recipe-skills.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rust-core/.gitignore +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rust-core/src/engine.rs +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/rust-core/src/main.rs +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/scripts/__init__.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/scripts/changelog_notes.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/scripts/check_no_duckdb_link.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/scripts/native_from_wheel.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/scripts/project_version.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/scripts/release_summary.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/scripts/verify_wheel_scripts.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/skills/codebase-to-okf/SKILL.md +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/skills/codebase-to-okf/scripts/codebase_to_okf.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/skills/codebase-to-okf/scripts/finalize_codebase_okf.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/skills/codebase-to-okf/scripts/python_codebase_to_okf.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/skills/codebase-to-okf/scripts/python_project_metadata_to_okf.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/skills/codebase-to-okf/scripts/query_codebase_okf.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/skills/codebase-to-okf/scripts/resolve_codebase_okf.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/__init__.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/apply.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/bundle.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/bundle_import.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/classification.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/cli.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/concepts.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/declared_schema.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/digests.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/discovery.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/duckdb.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/duckdb_types.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/edit.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/engine.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/exclusion.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/formatting.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/git_commit.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/git_commit_cli.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/graphql_adapter.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/ingestion.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/markdown_style.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/models.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/parser.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/projection_export.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/projections.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/pydantic_projection.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/relational_schema.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/rust_core.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/schema_contract.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/schema_export.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/schema_lexemes.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/schema_references.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/service.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/spec_scaffold.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/type_specs.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/typed_relations.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/typed_tables.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/src/okf_parser/write_support.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/__init__.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/fixtures/__init__.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/fixtures/declared_parity.expected.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/fixtures/declared_parity.schema.sql +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/fixtures/pydantic_adversarial_generated.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/fixtures/pydantic_generated.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_apply.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_apply_preview_token.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_apply_preview_token_noop.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_bundle.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_bundle_import.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_bundle_import_reserved.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_changelog_notes.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_classification.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_cli.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_codebase_to_okf_containment.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_codebase_to_okf_local_resolution.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_codebase_to_okf_one_shot.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_codebase_to_okf_project_manifest.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_codebase_to_okf_skill.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_codebase_to_okf_type_specs.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_concepts.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_conformance.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_content_digests.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_declared_schema.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_declared_schema_correctness.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_duckdb.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_duckdb_types.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_edit.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_engine_resolution.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_exclusion.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_exclusion_integration.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_formatting.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_formatting_conformance.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_git_commit.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_git_commit_cli.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_graphql_adapter.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_import_preview_token.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_ingestion.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_markdown_style.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_mcp.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_native_from_wheel.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_parser.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_project_version.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_projection_documents.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_projection_export.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_pydantic_source.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_reference_embed.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_reference_export.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_registry_state.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_registry_state_native_npm.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_relational_schema.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_release_summary.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_release_workflow_uv.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_rust_core.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_schema_export.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_schema_inference_conformance.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_schema_output_conformance.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_spec_scaffold.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_type_specs.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_typed_relations.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/tests/test_verify_wheel_scripts.py +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/.npmignore +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/LICENSE +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/scripts/smoke-mcp-stdio.mjs +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/cli.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/core.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/digests.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/engine.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/formatting.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/git-commit.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/index.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/ingestion.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/lexemes.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/mcp-cli.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/mcp.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/schema.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/src/type-specs.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/bundle.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/classification.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/content-digests.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/engine-resolution.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/exclusion.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/formatting.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/frontmatter.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/git-commit.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/ingestion.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/mcp.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/schema-inference-conformance.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/schema-output-conformance.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/schema.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/test/type-specs.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/tsconfig.build.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript/tsconfig.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/LICENSE +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/src/cli.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/src/index.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/test/current-load-options.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/test/digests.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/test/typed.test.ts +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/tsconfig.build.json +0 -0
- {okf_parser-0.45.4 → okf_parser-0.45.5}/typescript-duckdb/tsconfig.json +0 -0
|
@@ -447,7 +447,7 @@ dependencies = [
|
|
|
447
447
|
|
|
448
448
|
[[package]]
|
|
449
449
|
name = "okf-core"
|
|
450
|
-
version = "0.45.
|
|
450
|
+
version = "0.45.5"
|
|
451
451
|
dependencies = [
|
|
452
452
|
"clap",
|
|
453
453
|
"okf-engine",
|
|
@@ -457,7 +457,7 @@ dependencies = [
|
|
|
457
457
|
|
|
458
458
|
[[package]]
|
|
459
459
|
name = "okf-engine"
|
|
460
|
-
version = "0.45.
|
|
460
|
+
version = "0.45.5"
|
|
461
461
|
dependencies = [
|
|
462
462
|
"chrono",
|
|
463
463
|
"ignore",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: okf-parser
|
|
3
|
-
Version: 0.45.
|
|
3
|
+
Version: 0.45.5
|
|
4
4
|
Requires-Dist: cyclopts>=4.22,<5
|
|
5
5
|
Requires-Dist: duckdb>=1.4,<2
|
|
6
6
|
Requires-Dist: fastmcp>=3.4,<4
|
|
@@ -231,7 +231,7 @@ Add the repository as a CI check:
|
|
|
231
231
|
```yaml
|
|
232
232
|
steps:
|
|
233
233
|
- uses: actions/checkout@v7
|
|
234
|
-
- uses: franklinbaldo/okf-parser@v0.45.
|
|
234
|
+
- uses: franklinbaldo/okf-parser@v0.45.5
|
|
235
235
|
with:
|
|
236
236
|
path: knowledge
|
|
237
237
|
```
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Release Note
|
|
3
|
+
title: publish the npm packages under the @franklinbaldo scope
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
- Rename all three npm packages to `@franklinbaldo/okf-parser`, `@franklinbaldo/okf-parser-duckdb` and `@franklinbaldo/okf-parser-native-linux-x64`. npm refuses the unscoped name `okf-parser` because its similarity filter considers it too close to the existing `oxc-parser`; the refusal happens on upload, so name availability alone never proved the name was publishable.
|
|
7
|
+
- Keep the PyPI distribution unscoped as `okf-parser`. The Python and npm names are now deliberately different, because only npm imposes the similarity constraint.
|
|
8
|
+
- Update the source contract to expect the scoped names and the tarball file names `npm pack` derives from them, where the scope is flattened into the leading `franklinbaldo-` segment.
|
|
9
|
+
- Resolve the optional native package through its scoped name, so a Linux x64 consumer still finds the packaged engine.
|
|
@@ -15,7 +15,7 @@ bundle = load_bundle(root)
|
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
```ts
|
|
18
|
-
import { loadBundle } from "okf-parser";
|
|
18
|
+
import { loadBundle } from "@franklinbaldo/okf-parser";
|
|
19
19
|
|
|
20
20
|
const bundle = await loadBundle(root);
|
|
21
21
|
```
|
|
@@ -42,7 +42,7 @@ A source installation builds that same executable as part of building the `okf-p
|
|
|
42
42
|
|
|
43
43
|
## npm packaging
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
`@franklinbaldo/okf-parser` declares platform packages as optional dependencies. The first supported target is `@franklinbaldo/okf-parser-native-linux-x64`, which contains the release-matched executable under `bin/okf-core`. The TypeScript resolver discovers that package directly from `node_modules` before consulting environment overrides.
|
|
46
46
|
|
|
47
47
|
Installing with `--omit=optional`, or running on a platform for which no native companion is published, keeps the same `loadBundle()` API and uses the portable TypeScript implementation.
|
|
48
48
|
|
|
@@ -9,9 +9,11 @@ description: Build, verify and publish synchronized Python and TypeScript releas
|
|
|
9
9
|
The repository publishes one synchronized protocol version across one Python project and three npm packages:
|
|
10
10
|
|
|
11
11
|
- Python `okf-parser` on PyPI;
|
|
12
|
-
- TypeScript
|
|
13
|
-
- TypeScript
|
|
14
|
-
- platform npm companion
|
|
12
|
+
- TypeScript `@franklinbaldo/okf-parser` on npm;
|
|
13
|
+
- TypeScript `@franklinbaldo/okf-parser-duckdb` on npm;
|
|
14
|
+
- platform npm companion `@franklinbaldo/okf-parser-native-linux-x64` on npm.
|
|
15
|
+
|
|
16
|
+
The npm packages are scoped and the PyPI distribution is not. npm refuses the unscoped name `okf-parser`, whose similarity filter considers it too close to the existing `oxc-parser`, and that refusal only happens on upload. The scope is therefore a constraint npm imposes, not a naming preference.
|
|
15
17
|
|
|
16
18
|
There is no `okf-parser-native` PyPI project. The Rust engine is an implementation detail of the `okf-parser` Python distribution and is embedded directly in its single `okf-parser` executable.
|
|
17
19
|
|
|
@@ -27,10 +29,10 @@ release/
|
|
|
27
29
|
│ ├── okf_parser-X.Y.Z-<platform>.whl
|
|
28
30
|
│ └── okf_parser-X.Y.Z.tar.gz
|
|
29
31
|
├── npm/
|
|
30
|
-
│ ├── okf-parser-X.Y.Z.tgz
|
|
31
|
-
│ └── okf-parser-duckdb-X.Y.Z.tgz
|
|
32
|
+
│ ├── franklinbaldo-okf-parser-X.Y.Z.tgz
|
|
33
|
+
│ └── franklinbaldo-okf-parser-duckdb-X.Y.Z.tgz
|
|
32
34
|
├── native-npm/
|
|
33
|
-
│ └── okf-parser-native-linux-x64-X.Y.Z.tgz
|
|
35
|
+
│ └── franklinbaldo-okf-parser-native-linux-x64-X.Y.Z.tgz
|
|
34
36
|
├── manifest.json
|
|
35
37
|
├── registry-state.json
|
|
36
38
|
└── SHA256SUMS
|
|
@@ -52,7 +54,7 @@ Before building, `scripts/release_contract.py verify-source` requires all of the
|
|
|
52
54
|
- the Rust crate version;
|
|
53
55
|
- versions in the npm manifests;
|
|
54
56
|
- `PROTOCOL_VERSION` in `typescript/src/version.ts`;
|
|
55
|
-
- the
|
|
57
|
+
- the `@franklinbaldo/okf-parser` peer range in the DuckDB adapter;
|
|
56
58
|
- at least one release-note fragment in `changelog/X.Y.Z/`;
|
|
57
59
|
- an optional stable tag, exactly `vX.Y.Z`.
|
|
58
60
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Documentation
|
|
3
|
+
title: okf-parser native Linux x64 package
|
|
4
|
+
description: Platform companion that ships the release-matched okf-core executable for npm consumers
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# @franklinbaldo/okf-parser-native-linux-x64
|
|
8
|
+
|
|
9
|
+
Platform companion for `@franklinbaldo/okf-parser` on Linux x64.
|
|
10
|
+
|
|
11
|
+
This package contains the release-matched `okf-core` executable. It is installed as an optional dependency of `@franklinbaldo/okf-parser`; applications should not depend on it directly or hard-code its path. `loadBundle()` discovers it automatically and falls back to the portable TypeScript engine when no compatible native package is installed.
|
|
12
|
+
|
|
13
|
+
The companion version always matches the `@franklinbaldo/okf-parser` release that consumes it, so the resolver never needs to negotiate protocol compatibility at runtime.
|
|
14
|
+
|
|
15
|
+
The executable is built during the release workflow. Rust is never compiled during application installation or startup.
|
|
@@ -13,8 +13,8 @@ Add one tag-driven GitHub Actions release pipeline for the three synchronized
|
|
|
13
13
|
artifacts produced by this repository:
|
|
14
14
|
|
|
15
15
|
- the Python `okf-parser` distribution on PyPI;
|
|
16
|
-
- the TypeScript
|
|
17
|
-
- the optional
|
|
16
|
+
- the TypeScript `@franklinbaldo/okf-parser` package on npm;
|
|
17
|
+
- the optional `@franklinbaldo/okf-parser-duckdb` package on npm.
|
|
18
18
|
|
|
19
19
|
The workflow builds all artifacts once from one tagged commit, verifies them as
|
|
20
20
|
installed consumer artifacts, records checksums and provenance, and then
|
|
@@ -40,7 +40,7 @@ is still manual and therefore weaker than the code path it distributes.
|
|
|
40
40
|
Three facts make a naive `npm publish && twine upload` workflow unsafe:
|
|
41
41
|
|
|
42
42
|
1. the artifacts live in two independent registries;
|
|
43
|
-
2.
|
|
43
|
+
2. `@franklinbaldo/okf-parser-duckdb` has a peer dependency on the main npm package and must
|
|
44
44
|
not become visible first;
|
|
45
45
|
3. a network or registry failure can occur after one immutable upload succeeds.
|
|
46
46
|
|
|
@@ -214,7 +214,7 @@ release/
|
|
|
214
214
|
│ └── okf_parser-X.Y.Z.tar.gz
|
|
215
215
|
├── npm/
|
|
216
216
|
│ ├── okf-parser-X.Y.Z.tgz
|
|
217
|
-
│ └── okf-parser-duckdb-X.Y.Z.tgz
|
|
217
|
+
│ └── franklinbaldo-okf-parser-duckdb-X.Y.Z.tgz
|
|
218
218
|
└── manifest.json
|
|
219
219
|
```
|
|
220
220
|
|
|
@@ -296,8 +296,8 @@ automatic recovery action.
|
|
|
296
296
|
The safe dependency order is:
|
|
297
297
|
|
|
298
298
|
1. Python `okf-parser` to PyPI;
|
|
299
|
-
2. npm
|
|
300
|
-
3. npm
|
|
299
|
+
2. npm `@franklinbaldo/okf-parser`;
|
|
300
|
+
3. npm `@franklinbaldo/okf-parser-duckdb`.
|
|
301
301
|
|
|
302
302
|
PyPI and the main npm package do not depend on one another and may technically be
|
|
303
303
|
published in parallel. This RFC chooses a linear sequence because it produces a
|
|
@@ -366,11 +366,32 @@ workflow:
|
|
|
366
366
|
4. publish version `X.Y.Z` interactively from a maintainer workstation using
|
|
367
367
|
npm account MFA;
|
|
368
368
|
5. configure `release.yml` as the trusted publisher for the new package;
|
|
369
|
-
6. repeat for
|
|
369
|
+
6. repeat for `@franklinbaldo/okf-parser-duckdb` only after `@franklinbaldo/okf-parser` exists;
|
|
370
370
|
7. remove any temporary automation credential if one was created;
|
|
371
371
|
8. re-run the tag workflow, which verifies the existing digest and completes
|
|
372
372
|
the other registries/finalization idempotently.
|
|
373
373
|
|
|
374
|
+
## Amendment: the npm names are scoped
|
|
375
|
+
|
|
376
|
+
This section originally assumed unscoped npm names matching the PyPI
|
|
377
|
+
distribution. That assumption did not survive contact with the registry.
|
|
378
|
+
|
|
379
|
+
npm refused `okf-parser` with `403 Package name too similar to existing package
|
|
380
|
+
oxc-parser`. The refusal is produced by npm's similarity filter at upload time,
|
|
381
|
+
so the availability check in step 3 above -- which only proves that nobody has
|
|
382
|
+
registered the exact name -- can never predict it. All three packages are
|
|
383
|
+
therefore published under the `@franklinbaldo` scope, while the PyPI
|
|
384
|
+
distribution stays unscoped as `okf-parser`.
|
|
385
|
+
|
|
386
|
+
Scoping does not remove the bootstrap requirement: npm still refuses to
|
|
387
|
+
configure a trusted publisher for a package that does not exist, whether or not
|
|
388
|
+
it is scoped. It does remove the risk of a second similarity refusal, because
|
|
389
|
+
scoped names are not subject to that filter.
|
|
390
|
+
|
|
391
|
+
Two further details in this RFC are stale: the publication workflow is
|
|
392
|
+
`publish.yml`, not `release.yml`, and there are three npm packages rather than
|
|
393
|
+
two, since the platform companion did not exist when this RFC was written.
|
|
394
|
+
|
|
374
395
|
The first public release version is chosen only after package-name availability
|
|
375
396
|
is confirmed. If either name has been claimed, package renaming requires a
|
|
376
397
|
separate reviewed change; the release workflow must not improvise a registry
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "okf-core"
|
|
3
|
-
version = "0.45.
|
|
3
|
+
version = "0.45.5"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
license = "MIT"
|
|
6
6
|
description = "Native OKF CLI and compatibility adapters"
|
|
@@ -11,6 +11,6 @@ path = "src/main.rs"
|
|
|
11
11
|
|
|
12
12
|
[dependencies]
|
|
13
13
|
clap = { version = "4", features = ["derive"] }
|
|
14
|
-
okf-engine = { path = "../okf-engine", version = "0.45.
|
|
14
|
+
okf-engine = { path = "../okf-engine", version = "0.45.5" }
|
|
15
15
|
serde = { version = "1", features = ["derive"] }
|
|
16
16
|
serde_json = "1"
|
|
@@ -357,15 +357,22 @@ def inspect_registry_state(
|
|
|
357
357
|
if timeout <= 0:
|
|
358
358
|
_fail("registry timeout must be positive")
|
|
359
359
|
version, artifacts = _artifact_index(manifest)
|
|
360
|
+
|
|
361
|
+
# The published name is read from the manifest rather than repeated here, so
|
|
362
|
+
# a rename in the source contract cannot leave the preflight probing a name
|
|
363
|
+
# that is no longer the one being published.
|
|
364
|
+
def _npm_package(kind: str) -> str:
|
|
365
|
+
return _string(artifacts[kind], "package", "manifest artifact")
|
|
366
|
+
|
|
360
367
|
entries = [
|
|
361
368
|
_pypi_state(version, artifacts, fetch, timeout),
|
|
362
|
-
_npm_state("
|
|
363
|
-
_npm_state("
|
|
369
|
+
_npm_state(_npm_package("npm-parser"), artifacts["npm-parser"], fetch, timeout),
|
|
370
|
+
_npm_state(_npm_package("npm-duckdb"), artifacts["npm-duckdb"], fetch, timeout),
|
|
364
371
|
]
|
|
365
372
|
if "npm-native" in artifacts:
|
|
366
373
|
entries.append(
|
|
367
374
|
_npm_state(
|
|
368
|
-
"
|
|
375
|
+
_npm_package("npm-native"),
|
|
369
376
|
artifacts["npm-native"],
|
|
370
377
|
fetch,
|
|
371
378
|
timeout,
|
|
@@ -282,16 +282,19 @@ def _verify_npm_manifest(path: Path, package: str, version: str) -> dict[str, ob
|
|
|
282
282
|
|
|
283
283
|
def _verify_npm_contract(root: Path, version: str) -> None:
|
|
284
284
|
parser_path = root / "typescript" / "package.json"
|
|
285
|
-
parser = _verify_npm_manifest(parser_path, "okf-parser", version)
|
|
285
|
+
parser = _verify_npm_manifest(parser_path, "@franklinbaldo/okf-parser", version)
|
|
286
286
|
optional = _mapping(parser.get("optionalDependencies"), "optionalDependencies")
|
|
287
|
-
if
|
|
287
|
+
if (
|
|
288
|
+
_string(optional, "@franklinbaldo/okf-parser-native-linux-x64", "optionalDependencies")
|
|
289
|
+
!= version
|
|
290
|
+
):
|
|
288
291
|
_fail(f"native optional dependency must be {version}")
|
|
289
292
|
native_path = root / "native-npm-linux-x64" / "package.json"
|
|
290
|
-
_verify_npm_manifest(native_path, "okf-parser-native-linux-x64", version)
|
|
293
|
+
_verify_npm_manifest(native_path, "@franklinbaldo/okf-parser-native-linux-x64", version)
|
|
291
294
|
adapter_path = root / "typescript-duckdb" / "package.json"
|
|
292
|
-
adapter = _verify_npm_manifest(adapter_path, "okf-parser-duckdb", version)
|
|
295
|
+
adapter = _verify_npm_manifest(adapter_path, "@franklinbaldo/okf-parser-duckdb", version)
|
|
293
296
|
peers = _mapping(adapter.get("peerDependencies"), "peerDependencies")
|
|
294
|
-
if _string(peers, "okf-parser", "peerDependencies") != f"^{version}":
|
|
297
|
+
if _string(peers, "@franklinbaldo/okf-parser", "peerDependencies") != f"^{version}":
|
|
295
298
|
_fail(f"adapter peer dependency must be ^{version}")
|
|
296
299
|
|
|
297
300
|
|
|
@@ -399,21 +402,21 @@ def _expected(version: str) -> tuple[ExpectedArtifact, ...]:
|
|
|
399
402
|
),
|
|
400
403
|
ExpectedArtifact(
|
|
401
404
|
"npm-parser",
|
|
402
|
-
"okf-parser",
|
|
405
|
+
"@franklinbaldo/okf-parser",
|
|
403
406
|
"npm",
|
|
404
|
-
filename=f"okf-parser-{version}.tgz",
|
|
407
|
+
filename=f"franklinbaldo-okf-parser-{version}.tgz",
|
|
405
408
|
),
|
|
406
409
|
ExpectedArtifact(
|
|
407
410
|
"npm-duckdb",
|
|
408
|
-
"okf-parser-duckdb",
|
|
411
|
+
"@franklinbaldo/okf-parser-duckdb",
|
|
409
412
|
"npm",
|
|
410
|
-
filename=f"okf-parser-duckdb-{version}.tgz",
|
|
413
|
+
filename=f"franklinbaldo-okf-parser-duckdb-{version}.tgz",
|
|
411
414
|
),
|
|
412
415
|
ExpectedArtifact(
|
|
413
416
|
"npm-native",
|
|
414
|
-
"okf-parser-native-linux-x64",
|
|
417
|
+
"@franklinbaldo/okf-parser-native-linux-x64",
|
|
415
418
|
"native-npm",
|
|
416
|
-
filename=f"okf-parser-native-linux-x64-{version}.tgz",
|
|
419
|
+
filename=f"franklinbaldo-okf-parser-native-linux-x64-{version}.tgz",
|
|
417
420
|
),
|
|
418
421
|
)
|
|
419
422
|
|
|
@@ -45,23 +45,23 @@ def _write_source(root: Path, *, protocol_version: str = VERSION) -> None:
|
|
|
45
45
|
(root / "typescript" / "package.json").write_text(
|
|
46
46
|
json.dumps(
|
|
47
47
|
{
|
|
48
|
-
"name": "okf-parser",
|
|
48
|
+
"name": "@franklinbaldo/okf-parser",
|
|
49
49
|
"version": VERSION,
|
|
50
|
-
"optionalDependencies": {"okf-parser-native-linux-x64": VERSION},
|
|
50
|
+
"optionalDependencies": {"@franklinbaldo/okf-parser-native-linux-x64": VERSION},
|
|
51
51
|
}
|
|
52
52
|
),
|
|
53
53
|
encoding="utf-8",
|
|
54
54
|
)
|
|
55
55
|
(root / "native-npm-linux-x64" / "package.json").write_text(
|
|
56
|
-
json.dumps({"name": "okf-parser-native-linux-x64", "version": VERSION}),
|
|
56
|
+
json.dumps({"name": "@franklinbaldo/okf-parser-native-linux-x64", "version": VERSION}),
|
|
57
57
|
encoding="utf-8",
|
|
58
58
|
)
|
|
59
59
|
(root / "typescript-duckdb" / "package.json").write_text(
|
|
60
60
|
json.dumps(
|
|
61
61
|
{
|
|
62
|
-
"name": "okf-parser-duckdb",
|
|
62
|
+
"name": "@franklinbaldo/okf-parser-duckdb",
|
|
63
63
|
"version": VERSION,
|
|
64
|
-
"peerDependencies": {"okf-parser": f"^{VERSION}"},
|
|
64
|
+
"peerDependencies": {"@franklinbaldo/okf-parser": f"^{VERSION}"},
|
|
65
65
|
}
|
|
66
66
|
),
|
|
67
67
|
encoding="utf-8",
|
|
@@ -155,18 +155,25 @@ def _write_artifacts(release: Path, extra: dict[str, tuple[str, ...]] | None = N
|
|
|
155
155
|
for member in SDIST_MEMBERS + additions.get("python-sdist", ()):
|
|
156
156
|
_tar_member(archive, f"{root}/{member}", b"content\n")
|
|
157
157
|
with tarfile.open(
|
|
158
|
-
native_dir / f"okf-parser-native-linux-x64-{VERSION}.tgz", mode="w:gz"
|
|
158
|
+
native_dir / f"franklinbaldo-okf-parser-native-linux-x64-{VERSION}.tgz", mode="w:gz"
|
|
159
159
|
) as archive:
|
|
160
160
|
_tar_member(
|
|
161
161
|
archive,
|
|
162
162
|
"package/package.json",
|
|
163
|
-
json.dumps(
|
|
163
|
+
json.dumps(
|
|
164
|
+
{"name": "@franklinbaldo/okf-parser-native-linux-x64", "version": VERSION}
|
|
165
|
+
).encode(),
|
|
164
166
|
)
|
|
165
167
|
for member in NPM_NATIVE_MEMBERS + additions.get("npm-native", ()):
|
|
166
168
|
_tar_member(archive, f"package/{member}", b"content\n")
|
|
167
|
-
|
|
168
|
-
for
|
|
169
|
-
|
|
169
|
+
# `npm pack` flattens a scope into the leading file-name segment, so the
|
|
170
|
+
# published name and the tarball name differ for every scoped package.
|
|
171
|
+
kinds = {
|
|
172
|
+
"@franklinbaldo/okf-parser": ("npm-parser", "franklinbaldo-okf-parser"),
|
|
173
|
+
"@franklinbaldo/okf-parser-duckdb": ("npm-duckdb", "franklinbaldo-okf-parser-duckdb"),
|
|
174
|
+
}
|
|
175
|
+
for package, (kind, stem) in kinds.items():
|
|
176
|
+
with tarfile.open(npm_dir / f"{stem}-{VERSION}.tgz", mode="w:gz") as archive:
|
|
170
177
|
_tar_member(
|
|
171
178
|
archive,
|
|
172
179
|
"package/package.json",
|
|
@@ -201,7 +208,7 @@ def test_verify_source_rejects_stale_native_optional_dependency(tmp_path: Path)
|
|
|
201
208
|
_write_source(tmp_path)
|
|
202
209
|
parser_path = tmp_path / "typescript" / "package.json"
|
|
203
210
|
parser = json.loads(parser_path.read_text(encoding="utf-8"))
|
|
204
|
-
parser["optionalDependencies"]["okf-parser-native-linux-x64"] = "1.2.2"
|
|
211
|
+
parser["optionalDependencies"]["@franklinbaldo/okf-parser-native-linux-x64"] = "1.2.2"
|
|
205
212
|
parser_path.write_text(json.dumps(parser), encoding="utf-8")
|
|
206
213
|
with pytest.raises(ContractError, match="native optional dependency"):
|
|
207
214
|
verify_source(tmp_path)
|
|
@@ -320,7 +327,7 @@ def test_verify_contents_rejects_members_outside_package_root(tmp_path: Path) ->
|
|
|
320
327
|
_write_source(tmp_path)
|
|
321
328
|
release = tmp_path / "release"
|
|
322
329
|
_write_artifacts(release)
|
|
323
|
-
tarball = release / "npm" / f"okf-parser-{VERSION}.tgz"
|
|
330
|
+
tarball = release / "npm" / f"franklinbaldo-okf-parser-{VERSION}.tgz"
|
|
324
331
|
with tarfile.open(tarball, mode="r:gz") as archive:
|
|
325
332
|
members = [(member.name, _tar_bytes(archive, member)) for member in archive.getmembers()]
|
|
326
333
|
with tarfile.open(tarball, mode="w:gz") as archive:
|
|
@@ -11,12 +11,12 @@ the same observable contract as the Python package while using an idiomatic
|
|
|
11
11
|
immutable TypeScript core.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install okf-parser
|
|
14
|
+
npm install @franklinbaldo/okf-parser
|
|
15
15
|
npx okf-parser-ts check ./knowledge
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
```ts
|
|
19
|
-
import { checkBundle, exportZod, parseDocumentContent } from "okf-parser";
|
|
19
|
+
import { checkBundle, exportZod, parseDocumentContent } from "@franklinbaldo/okf-parser";
|
|
20
20
|
|
|
21
21
|
const parsed = parseDocumentContent(`---\ntype: Reference\ncount: 0012\n---\n`);
|
|
22
22
|
const report = await checkBundle("./knowledge");
|
|
@@ -49,15 +49,15 @@ to errors. The slug derivation is shared with the Python package through
|
|
|
49
49
|
Formatting is read-only unless `--write` is explicit:
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
npx --package okf-parser okf-parser-ts format ./knowledge
|
|
53
|
-
npx --package okf-parser okf-parser-ts format ./knowledge --write
|
|
52
|
+
npx --package @franklinbaldo/okf-parser okf-parser-ts format ./knowledge
|
|
53
|
+
npx --package @franklinbaldo/okf-parser okf-parser-ts format ./knowledge --write
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
The library exposes both the pure one-document formatter and the filesystem
|
|
57
57
|
operation:
|
|
58
58
|
|
|
59
59
|
```ts
|
|
60
|
-
import { formatMarkdown, formatPath } from "okf-parser";
|
|
60
|
+
import { formatMarkdown, formatPath } from "@franklinbaldo/okf-parser";
|
|
61
61
|
|
|
62
62
|
const canonical = formatMarkdown("# Heading\n\n- item\n");
|
|
63
63
|
const report = await formatPath("./knowledge", { write: true });
|
|
@@ -74,7 +74,7 @@ formatted before the first write.
|
|
|
74
74
|
The package includes a read-only stdio MCP server:
|
|
75
75
|
|
|
76
76
|
```bash
|
|
77
|
-
npx --package okf-parser okf-parser-ts-mcp
|
|
77
|
+
npx --package @franklinbaldo/okf-parser okf-parser-ts-mcp
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
A typical host configuration is:
|
|
@@ -109,11 +109,11 @@ DuckDB support is published separately so native database bindings are never
|
|
|
109
109
|
installed for parser-only consumers:
|
|
110
110
|
|
|
111
111
|
```bash
|
|
112
|
-
npm install okf-parser okf-parser-duckdb
|
|
112
|
+
npm install @franklinbaldo/okf-parser okf-parser-duckdb
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
```ts
|
|
116
|
-
import { exportDuckDb } from "okf-parser-duckdb";
|
|
116
|
+
import { exportDuckDb } from "@franklinbaldo/okf-parser-duckdb";
|
|
117
117
|
|
|
118
118
|
await exportDuckDb("./knowledge", { database: "knowledge.duckdb" });
|
|
119
119
|
```
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "okf-parser",
|
|
3
|
-
"version": "0.
|
|
2
|
+
"name": "@franklinbaldo/okf-parser",
|
|
3
|
+
"version": "0.45.5",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
|
-
"name": "okf-parser",
|
|
9
|
-
"version": "0.
|
|
8
|
+
"name": "@franklinbaldo/okf-parser",
|
|
9
|
+
"version": "0.45.5",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
"node": ">=22"
|
|
36
36
|
},
|
|
37
37
|
"optionalDependencies": {
|
|
38
|
-
"okf-parser-native-linux-x64": "
|
|
38
|
+
"@franklinbaldo/okf-parser-native-linux-x64": "file:../native-npm-linux-x64"
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"../native-npm-linux-x64": {
|
|
42
|
-
"name": "okf-parser-native-linux-x64",
|
|
43
|
-
"version": "0.
|
|
42
|
+
"name": "@franklinbaldo/okf-parser-native-linux-x64",
|
|
43
|
+
"version": "0.45.5",
|
|
44
44
|
"cpu": [
|
|
45
45
|
"x64"
|
|
46
46
|
],
|
|
@@ -495,6 +495,10 @@
|
|
|
495
495
|
"node": ">=18"
|
|
496
496
|
}
|
|
497
497
|
},
|
|
498
|
+
"node_modules/@franklinbaldo/okf-parser-native-linux-x64": {
|
|
499
|
+
"resolved": "../native-npm-linux-x64",
|
|
500
|
+
"link": true
|
|
501
|
+
},
|
|
498
502
|
"node_modules/@hono/node-server": {
|
|
499
503
|
"version": "2.0.12",
|
|
500
504
|
"resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.0.12.tgz",
|
|
@@ -2990,10 +2994,6 @@
|
|
|
2990
2994
|
"url": "https://github.com/sponsors/ljharb"
|
|
2991
2995
|
}
|
|
2992
2996
|
},
|
|
2993
|
-
"node_modules/okf-parser-native-linux-x64": {
|
|
2994
|
-
"resolved": "../native-npm-linux-x64",
|
|
2995
|
-
"link": true
|
|
2996
|
-
},
|
|
2997
2997
|
"node_modules/on-finished": {
|
|
2998
2998
|
"version": "2.4.1",
|
|
2999
2999
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "okf-parser",
|
|
3
|
-
"version": "0.45.
|
|
2
|
+
"name": "@franklinbaldo/okf-parser",
|
|
3
|
+
"version": "0.45.5",
|
|
4
4
|
"description": "Native TypeScript parser, validator, formatter, graph inspector, schema exporter, and MCP server for Open Knowledge Format bundles",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"bin": {"okf-parser-ts": "./dist/cli.js", "okf-parser-ts-mcp": "./dist/mcp-cli.js"},
|
|
16
16
|
"scripts": {"build": "tsc -p tsconfig.build.json", "check": "tsc -p tsconfig.json --noEmit", "test": "vitest run", "test:watch": "vitest", "prepack": "npm run build"},
|
|
17
17
|
"dependencies": {"@modelcontextprotocol/sdk": "^1.30.0", "markdown-it": "^14.1.0", "mdast-util-frontmatter": "^2.0.1", "mdast-util-from-markdown": "^2.0.3", "mdast-util-gfm": "^3.0.0", "mdast-util-to-markdown": "^2.1.2", "micromark-extension-frontmatter": "^2.0.0", "micromark-extension-gfm": "^3.0.0", "yaml": "^2.8.1", "zod": "^4.0.0"},
|
|
18
|
-
"optionalDependencies": {"okf-parser-native-linux-x64": "0.45.
|
|
18
|
+
"optionalDependencies": {"@franklinbaldo/okf-parser-native-linux-x64": "0.45.5"},
|
|
19
19
|
"devDependencies": {"@types/markdown-it": "^14.1.2", "@types/node": "^24.0.0", "@types/unist": "^3.0.3", "typescript": "^5.9.0", "vitest": "^3.2.4"},
|
|
20
20
|
"keywords": ["okf", "open-knowledge-format", "markdown", "formatter", "knowledge-graph", "json-schema", "zod", "mcp", "model-context-protocol", "typescript"],
|
|
21
21
|
"repository": {"type": "git", "url": "git+https://github.com/franklinbaldo/okf-parser.git", "directory": "typescript"}
|
|
@@ -23,7 +23,7 @@ function binaryName(): string {
|
|
|
23
23
|
|
|
24
24
|
function nativePackageName(): string | undefined {
|
|
25
25
|
if (process.platform === "linux" && process.arch === "x64") {
|
|
26
|
-
return "okf-parser-native-linux-x64";
|
|
26
|
+
return "@franklinbaldo/okf-parser-native-linux-x64";
|
|
27
27
|
}
|
|
28
28
|
return undefined;
|
|
29
29
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const PROTOCOL_VERSION = "0.45.5";
|
|
@@ -4,19 +4,19 @@ title: okf-parser DuckDB adapter
|
|
|
4
4
|
description: Optional native DuckDB materialization for the TypeScript parser
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# okf-parser-duckdb
|
|
7
|
+
# @franklinbaldo/okf-parser-duckdb
|
|
8
8
|
|
|
9
|
-
Optional DuckDB materialization adapter for the TypeScript
|
|
9
|
+
Optional DuckDB materialization adapter for the TypeScript `@franklinbaldo/okf-parser` package.
|
|
10
10
|
It uses the official promise-native `@duckdb/node-api` client and remains a
|
|
11
11
|
separate package so native database bindings never burden parser-only users.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install okf-parser okf-parser-duckdb
|
|
14
|
+
npm install @franklinbaldo/okf-parser @franklinbaldo/okf-parser-duckdb
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
```ts
|
|
18
18
|
import { DuckDBConnection } from "@duckdb/node-api";
|
|
19
|
-
import { attachOkf } from "okf-parser-duckdb";
|
|
19
|
+
import { attachOkf } from "@franklinbaldo/okf-parser-duckdb";
|
|
20
20
|
|
|
21
21
|
const connection = await DuckDBConnection.create();
|
|
22
22
|
const report = await attachOkf(connection, "./knowledge");
|
|
@@ -25,7 +25,7 @@ const report = await attachOkf(connection, "./knowledge");
|
|
|
25
25
|
To create or update a persistent database file:
|
|
26
26
|
|
|
27
27
|
```ts
|
|
28
|
-
import { exportDuckDb } from "okf-parser-duckdb";
|
|
28
|
+
import { exportDuckDb } from "@franklinbaldo/okf-parser-duckdb";
|
|
29
29
|
|
|
30
30
|
const report = await exportDuckDb("./knowledge", {
|
|
31
31
|
database: "knowledge.duckdb",
|
|
@@ -36,7 +36,7 @@ const report = await exportDuckDb("./knowledge", {
|
|
|
36
36
|
Or use the CLI:
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
npx --package okf-parser-duckdb okf-parser-ts-duckdb ./knowledge \
|
|
39
|
+
npx --package @franklinbaldo/okf-parser-duckdb okf-parser-ts-duckdb ./knowledge \
|
|
40
40
|
--database knowledge.duckdb
|
|
41
41
|
```
|
|
42
42
|
|