pi-career 0.1.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 +22 -0
- package/LICENSE-APACHE +201 -0
- package/LICENSE-MIT +21 -0
- package/NOTICE +31 -0
- package/README.md +159 -0
- package/SECURITY.md +45 -0
- package/dist/index.js +2345 -0
- package/docs/design.md +78 -0
- package/docs/licenses/MIT-aho-corasick-memchr.txt +21 -0
- package/docs/licenses/MIT-anstyle-clap-family.txt +19 -0
- package/docs/licenses/MIT-dtolnay-family.txt +23 -0
- package/docs/licenses/MIT-heck.txt +25 -0
- package/docs/licenses/MIT-regex-family.txt +25 -0
- package/docs/licenses/MIT-strsim.txt +23 -0
- package/docs/licenses/MIT-utf8parse.txt +25 -0
- package/docs/licenses/Rust-1.97.1-COPYRIGHT.txt +34 -0
- package/docs/licenses/Rust-1.97.1-LICENSE-MIT.txt +25 -0
- package/docs/licenses/Rust-1.97.1-STDLIB-NOTICE.md +16 -0
- package/docs/licenses/Unicode-3.0.txt +39 -0
- package/docs/native-dependency-inventory.md +116 -0
- package/docs/product-flow.md +47 -0
- package/docs/releasing.md +122 -0
- package/package.json +91 -0
- package/runtime/LICENSE-APACHE +201 -0
- package/runtime/LICENSE-MIT +21 -0
- package/runtime/THIRD_PARTY_NOTICES.md +22 -0
- package/runtime/darwin-arm64/career +0 -0
- package/runtime/darwin-arm64/provenance.json +101 -0
- package/runtime/linux-x64-gnu/career +0 -0
- package/runtime/linux-x64-gnu/provenance.json +101 -0
- package/runtime/manifest.json +109 -0
- package/skills/career-core/SKILL.md +134 -0
- package/skills/career-core/references/cli-contract.md +45 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"build": {
|
|
3
|
+
"cargo_version": "cargo 1.97.1 (c980f4866 2026-06-30)",
|
|
4
|
+
"command": [
|
|
5
|
+
"cargo",
|
|
6
|
+
"build",
|
|
7
|
+
"--release",
|
|
8
|
+
"--locked",
|
|
9
|
+
"-p",
|
|
10
|
+
"career-cli",
|
|
11
|
+
"--target",
|
|
12
|
+
"x86_64-unknown-linux-gnu"
|
|
13
|
+
],
|
|
14
|
+
"host_arch": "x86_64",
|
|
15
|
+
"host_os": "linux",
|
|
16
|
+
"locked": true,
|
|
17
|
+
"os_release": "Linux 6.17.0-1020-azure",
|
|
18
|
+
"platform_key": "linux-x64-gnu",
|
|
19
|
+
"profile": "release",
|
|
20
|
+
"rustc_version": "rustc 1.97.1 (8bab26f4f 2026-07-14)",
|
|
21
|
+
"target_triple": "x86_64-unknown-linux-gnu"
|
|
22
|
+
},
|
|
23
|
+
"contract_digests": {
|
|
24
|
+
"capabilities": {
|
|
25
|
+
"schema_version": "career.capabilities.v1",
|
|
26
|
+
"sha256": "c45443be0ba7cfbcd4e20b28d8d100f33542e77b0b983ebf3110dddfdd71d3f3",
|
|
27
|
+
"size_bytes": 1855
|
|
28
|
+
},
|
|
29
|
+
"schema_catalog": {
|
|
30
|
+
"schema_count": 25,
|
|
31
|
+
"schema_version": "career.schema_catalog.v1",
|
|
32
|
+
"sha256": "398b093a1a6245e05a1a93eafd2162c0fe5afcb4b3ff3c7856730ac64628c5e0",
|
|
33
|
+
"size_bytes": 3795
|
|
34
|
+
},
|
|
35
|
+
"schema_export": {
|
|
36
|
+
"schema_id": "career.job_match.v1",
|
|
37
|
+
"sha256": "286cf0297b3f1b224f7ec7db4b06605423dbff844a38fe79d0c53fd4dea5bfde",
|
|
38
|
+
"size_bytes": 11526
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"executable": {
|
|
42
|
+
"file_name": "career",
|
|
43
|
+
"sha256": "0d8a392fe2127b1b447f10035a00ad7b521806c2d81f140bdcae1cc99d7cb25b",
|
|
44
|
+
"size_bytes": 5516544,
|
|
45
|
+
"version_output": "career 0.1.0"
|
|
46
|
+
},
|
|
47
|
+
"licenses_and_notices": [
|
|
48
|
+
{
|
|
49
|
+
"file_name": "LICENSE-MIT",
|
|
50
|
+
"sha256": "10c3e4d0fc59a6a502c18039ae76f3ff473e3f17c3428f7e417582665e65e8e9",
|
|
51
|
+
"size_bytes": 1075
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"file_name": "LICENSE-APACHE",
|
|
55
|
+
"sha256": "2f2746efca80d5c78999cf97ee127ec9e3b0e86346004f71de39a7f8f8b9b1e8",
|
|
56
|
+
"size_bytes": 11348
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"file_name": "THIRD_PARTY_NOTICES.md",
|
|
60
|
+
"sha256": "50c74854ed27f9347ea2f647a42a18c3c5579fd32f19a416941eab50fca59ca1",
|
|
61
|
+
"size_bytes": 1141
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"native_verification": [
|
|
65
|
+
{
|
|
66
|
+
"golden_fixture": "fixtures/resume/phase3/complete-analysis.expected.json",
|
|
67
|
+
"input_fixture": "fixtures/resume/phase3/complete-analysis.input.json",
|
|
68
|
+
"operation": "resume.analyze",
|
|
69
|
+
"output_schema_version": "career.resume_analysis.v1",
|
|
70
|
+
"output_sha256": "01eb6332172ea2e747be7b409fe31f646882079a36d327eb66bf3f3a92bb4acc",
|
|
71
|
+
"output_size_bytes": 12416
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"golden_fixture": "fixtures/job/phase4b/complete-match.expected.json",
|
|
75
|
+
"input_fixture": "fixtures/job/phase4b/complete-match.input.json",
|
|
76
|
+
"operation": "job.match",
|
|
77
|
+
"output_schema_version": "career.job_match.v1",
|
|
78
|
+
"output_sha256": "872727a02f690b8269533c845e701086a90523a8579ccd0bee3abc8561764e96",
|
|
79
|
+
"output_size_bytes": 17598
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"package": {
|
|
83
|
+
"archive_file": "career-pi-runtime-linux-x64-gnu-x86_64-unknown-linux-gnu-a3cdb4c6d7f966397e93ea4664071975bca7228c.tar.gz",
|
|
84
|
+
"contents": [
|
|
85
|
+
"career",
|
|
86
|
+
"metadata.json",
|
|
87
|
+
"LICENSE-MIT",
|
|
88
|
+
"LICENSE-APACHE",
|
|
89
|
+
"THIRD_PARTY_NOTICES.md"
|
|
90
|
+
],
|
|
91
|
+
"unsigned": true
|
|
92
|
+
},
|
|
93
|
+
"publication_status": "not_a_public_release",
|
|
94
|
+
"purpose": "maintainer_input_for_external_pi_career",
|
|
95
|
+
"schema_version": "career.pi_career_runtime_artifact.v1",
|
|
96
|
+
"source": {
|
|
97
|
+
"git_dirty": false,
|
|
98
|
+
"git_sha": "a3cdb4c6d7f966397e93ea4664071975bca7228c",
|
|
99
|
+
"repository": "https://github.com/revazi/career-core"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "pi.career.runtime_manifest.v1",
|
|
3
|
+
"career_core": {
|
|
4
|
+
"repository": "https://github.com/revazi/career-core",
|
|
5
|
+
"commit": "a3cdb4c6d7f966397e93ea4664071975bca7228c",
|
|
6
|
+
"version": "0.1.0",
|
|
7
|
+
"artifact_run": {
|
|
8
|
+
"id": 30953471793,
|
|
9
|
+
"url": "https://github.com/revazi/career-core/actions/runs/30953471793",
|
|
10
|
+
"workflow": "Prepare pi-career runtime artifacts"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"distribution": {
|
|
14
|
+
"public_repository": true,
|
|
15
|
+
"unsigned": true,
|
|
16
|
+
"publication_status": "not_a_public_release"
|
|
17
|
+
},
|
|
18
|
+
"contracts": {
|
|
19
|
+
"capabilities": {
|
|
20
|
+
"schema_version": "career.capabilities.v1",
|
|
21
|
+
"sha256": "c45443be0ba7cfbcd4e20b28d8d100f33542e77b0b983ebf3110dddfdd71d3f3",
|
|
22
|
+
"size_bytes": 1855
|
|
23
|
+
},
|
|
24
|
+
"schema_catalog": {
|
|
25
|
+
"schema_version": "career.schema_catalog.v1",
|
|
26
|
+
"schema_count": 25,
|
|
27
|
+
"sha256": "398b093a1a6245e05a1a93eafd2162c0fe5afcb4b3ff3c7856730ac64628c5e0",
|
|
28
|
+
"size_bytes": 3795
|
|
29
|
+
},
|
|
30
|
+
"schema_export": {
|
|
31
|
+
"schema_id": "career.job_match.v1",
|
|
32
|
+
"sha256": "286cf0297b3f1b224f7ec7db4b06605423dbff844a38fe79d0c53fd4dea5bfde",
|
|
33
|
+
"size_bytes": 11526
|
|
34
|
+
},
|
|
35
|
+
"representative_operations": {
|
|
36
|
+
"resume.analyze": {
|
|
37
|
+
"schema_version": "career.resume_analysis.v1",
|
|
38
|
+
"sha256": "01eb6332172ea2e747be7b409fe31f646882079a36d327eb66bf3f3a92bb4acc",
|
|
39
|
+
"size_bytes": 12416
|
|
40
|
+
},
|
|
41
|
+
"job.match": {
|
|
42
|
+
"schema_version": "career.job_match.v1",
|
|
43
|
+
"sha256": "872727a02f690b8269533c845e701086a90523a8579ccd0bee3abc8561764e96",
|
|
44
|
+
"size_bytes": 17598
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"licenses_and_notices": [
|
|
49
|
+
{
|
|
50
|
+
"path": "runtime/LICENSE-MIT",
|
|
51
|
+
"sha256": "10c3e4d0fc59a6a502c18039ae76f3ff473e3f17c3428f7e417582665e65e8e9",
|
|
52
|
+
"size_bytes": 1075
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"path": "runtime/LICENSE-APACHE",
|
|
56
|
+
"sha256": "2f2746efca80d5c78999cf97ee127ec9e3b0e86346004f71de39a7f8f8b9b1e8",
|
|
57
|
+
"size_bytes": 11348
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"path": "runtime/THIRD_PARTY_NOTICES.md",
|
|
61
|
+
"sha256": "50c74854ed27f9347ea2f647a42a18c3c5579fd32f19a416941eab50fca59ca1",
|
|
62
|
+
"size_bytes": 1141
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"targets": {
|
|
66
|
+
"darwin-arm64": {
|
|
67
|
+
"platform": "darwin",
|
|
68
|
+
"arch": "arm64",
|
|
69
|
+
"libc": null,
|
|
70
|
+
"target_triple": "aarch64-apple-darwin",
|
|
71
|
+
"path": "runtime/darwin-arm64/career",
|
|
72
|
+
"provenance_path": "runtime/darwin-arm64/provenance.json",
|
|
73
|
+
"provenance_sha256": "0e5cd03385dd11283551b3d198d071aebbef4ab99b7c278a60fba2ab8269e0c6",
|
|
74
|
+
"provenance_size_bytes": 3275,
|
|
75
|
+
"sha256": "9e46972c1d4b2a1ca695595c0953c4198bfb12af2ba39f040e955b5b11952790",
|
|
76
|
+
"size_bytes": 4522688,
|
|
77
|
+
"mode": "0755",
|
|
78
|
+
"version_output": "career 0.1.0",
|
|
79
|
+
"source_artifact": {
|
|
80
|
+
"id": 8910079991,
|
|
81
|
+
"name": "career-pi-runtime-darwin-arm64-aarch64-apple-darwin-a3cdb4c6d7f966397e93ea4664071975bca7228c",
|
|
82
|
+
"archive_file": "career-pi-runtime-darwin-arm64-aarch64-apple-darwin-a3cdb4c6d7f966397e93ea4664071975bca7228c.tar.gz",
|
|
83
|
+
"archive_sha256": "3847ca2b06e8b41d86b6a4e3d4ce1f0a0cfd2322bf7f9a19330abb3f58b9ef2c",
|
|
84
|
+
"download_size_bytes": 1486583
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"linux-x64-gnu": {
|
|
88
|
+
"platform": "linux",
|
|
89
|
+
"arch": "x64",
|
|
90
|
+
"libc": "gnu",
|
|
91
|
+
"target_triple": "x86_64-unknown-linux-gnu",
|
|
92
|
+
"path": "runtime/linux-x64-gnu/career",
|
|
93
|
+
"provenance_path": "runtime/linux-x64-gnu/provenance.json",
|
|
94
|
+
"provenance_sha256": "98ee468bb78d3ade4f398ec11615a4ae7469c850817655c63cfea94a7b79cc0f",
|
|
95
|
+
"provenance_size_bytes": 3300,
|
|
96
|
+
"sha256": "0d8a392fe2127b1b447f10035a00ad7b521806c2d81f140bdcae1cc99d7cb25b",
|
|
97
|
+
"size_bytes": 5516544,
|
|
98
|
+
"mode": "0755",
|
|
99
|
+
"version_output": "career 0.1.0",
|
|
100
|
+
"source_artifact": {
|
|
101
|
+
"id": 8910084163,
|
|
102
|
+
"name": "career-pi-runtime-linux-x64-gnu-x86_64-unknown-linux-gnu-a3cdb4c6d7f966397e93ea4664071975bca7228c",
|
|
103
|
+
"archive_file": "career-pi-runtime-linux-x64-gnu-x86_64-unknown-linux-gnu-a3cdb4c6d7f966397e93ea4664071975bca7228c.tar.gz",
|
|
104
|
+
"archive_sha256": "966f2b0693f815926eb53ee36933f5f1e8b6ea599ca7f33b308b82fc6cb88eed",
|
|
105
|
+
"download_size_bytes": 1679647
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: career-core
|
|
3
|
+
description: Discovers and invokes the package-owned deterministic Career Core runtime for source-grounded resume evaluation/normalization/readiness analysis, reviewed external suggestions and replacements, assisted-variant review/materialization, job normalization, and conservative matching. Use for supported career-document analysis or local integration work.
|
|
4
|
+
license: MIT OR Apache-2.0
|
|
5
|
+
compatibility: Requires Pi with pi-career on supported darwin-arm64 or linux-x64-gnu; CAREER_CLI_PATH is an optional bounded developer/recovery override.
|
|
6
|
+
metadata:
|
|
7
|
+
author: revazi
|
|
8
|
+
version: "0.1.0"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Career Core through pi-career
|
|
12
|
+
|
|
13
|
+
Use the package-owned Career Core runtime through the three native tools. Career Core is authoritative; the extension only transports bounded argv/stdin JSON. Never recreate scoring, schemas, errors, evidence rules, uncertainty, or repair behavior in prompts or TypeScript.
|
|
14
|
+
|
|
15
|
+
## Privacy decision before document use
|
|
16
|
+
|
|
17
|
+
Pi may persist tool arguments and results in session JSONL even though Career Core and this extension do not persist career documents. Before putting private resume or job content in `career_core_resume` or `career_core_job`, require the user to make an explicit Pi session-persistence decision. Recommend starting a new transient run:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pi --no-session
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Do not claim secure erasure or removal of previous sessions, backups, shell history, provider copies, or separately saved results. If the user does not approve private content in Pi context, do not call a document tool. Local-session approval is not approval to send content to an external model/provider.
|
|
24
|
+
|
|
25
|
+
## Discover first
|
|
26
|
+
|
|
27
|
+
1. Call `career_core_discover` with `operation: "capabilities"`.
|
|
28
|
+
2. Invoke only capabilities whose status is `available`; never treat planned entries as callable.
|
|
29
|
+
3. Call `career_core_discover` with `operation: "schema-list"`.
|
|
30
|
+
4. Export the exact input schema needed with `operation: "schema-export"` and its returned schema ID.
|
|
31
|
+
5. Construct exactly one versioned input object matching that schema, serialize it as the `input_json` string, and call the relevant document tool.
|
|
32
|
+
|
|
33
|
+
Do not infer input shapes from this prose. The bundled runtime embeds the reviewed Draft 2020-12 schemas and discovery performs no network request.
|
|
34
|
+
|
|
35
|
+
## Deterministic slash commands
|
|
36
|
+
|
|
37
|
+
On supported targets, users can run `/career-setup`, `/career-library`, `/career-vacancy`, `/career-match`, and `/career-analyze` without involving a provider/model. These commands invoke the same package-owned runtime directly rather than calling the native tools through the LLM. They scan only configured Markdown/text roots, keep assisted variants and inputs over 50,000 Unicode scalar values out of authoritative analysis/matching, require persisted-session consent before private custom entries, and never store full Core JSON.
|
|
38
|
+
|
|
39
|
+
Use the native tool flow below for operations not exposed by those commands or when the user explicitly requests direct schema-level work.
|
|
40
|
+
|
|
41
|
+
## Native tool surface
|
|
42
|
+
|
|
43
|
+
- `career_core_discover`
|
|
44
|
+
- `capabilities`
|
|
45
|
+
- `schema-list`
|
|
46
|
+
- `schema-export` (requires exact `schema_id` from the list)
|
|
47
|
+
- `career_core_resume`
|
|
48
|
+
- `evaluate`
|
|
49
|
+
- `analyze`
|
|
50
|
+
- `analysis-suggestions-review`
|
|
51
|
+
- `analysis-replacements-review`
|
|
52
|
+
- `normalize`
|
|
53
|
+
- `enrich`
|
|
54
|
+
- `variant-review`
|
|
55
|
+
- `variant-materialize`
|
|
56
|
+
- `career_core_job`
|
|
57
|
+
- `normalize`
|
|
58
|
+
- `match`
|
|
59
|
+
|
|
60
|
+
The document tools send `input_json` only to package-owned runtime stdin with `--input - --format json-compact`. They never search PATH, invoke Cargo, fetch URLs, call a provider/model, or write payload/result files. Successful tool text is the complete runtime JSON without semantic transformation.
|
|
61
|
+
|
|
62
|
+
## Failure handling
|
|
63
|
+
|
|
64
|
+
A `career.pi_error.v1` value is adapter/process status, not a deterministic career result.
|
|
65
|
+
|
|
66
|
+
- `unsupported_platform` means no reviewed bundled runtime exists for this platform/libc; do not guess, download, or fall back to PATH/Cargo.
|
|
67
|
+
- `bundled_runtime_invalid` means local integrity verification failed; do not request paths, hashes, environment values, or raw filesystem errors.
|
|
68
|
+
- On `career_cli_error`, inspect only the nested, validated, bounded `career.error.v1`.
|
|
69
|
+
- Correct typed invalid input before trying again; do not repair by guesswork or retry unchanged validation failures.
|
|
70
|
+
- On `result_too_large` or `result_too_many_lines`, do not request or use partial output. Full-result export is not yet available through pi-career.
|
|
71
|
+
- Do not ask for raw stderr, paths, environment values, source copies, or hidden process errors.
|
|
72
|
+
|
|
73
|
+
## Resume operation rules
|
|
74
|
+
|
|
75
|
+
### `evaluate`
|
|
76
|
+
|
|
77
|
+
This is recognized core-section header coverage only. Preserve `limited_evaluation_scope` and parser uncertainty. Never present it as complete resume quality, proprietary ATS compatibility, visual-layout inspection, or a hiring prediction. Use `analyze` for full deterministic readiness analysis.
|
|
78
|
+
|
|
79
|
+
### `analyze`
|
|
80
|
+
|
|
81
|
+
Read `raw_score`, confidence-adjusted `score`, checks, evidence, `basis_check_id`, actions, warnings, and limitations together. Treat `inconclusive` checks and `provisional` findings as unverified. It independently scores only deterministic normalization of the original input; assisted documents cannot enter.
|
|
82
|
+
|
|
83
|
+
### `normalize`
|
|
84
|
+
|
|
85
|
+
Preserve source-grounded fields, source spans, confidence, statuses, warnings, and `enrichment_request`. `not_detected` is not confirmed absence.
|
|
86
|
+
|
|
87
|
+
### `enrich`
|
|
88
|
+
|
|
89
|
+
This validates an explicit, already supplied source-grounded external proposal; it does not generate one or call a provider. Use only when the deterministic request is eligible and the proposal exactly matches the exported schema. Values must come from source text and target only eligible empty fields. Preserve the unchanged authoritative `baseline`; keep `assisted_document` separate and never feed it into authoritative analysis or matching.
|
|
90
|
+
|
|
91
|
+
### `analysis-suggestions-review`
|
|
92
|
+
|
|
93
|
+
This reruns and preserves the deterministic `baseline_analysis` while reviewing at most the schema-bounded source-targeted suggestions. Retained suggestions are assisted/non-authoritative and bound to current failed canonical actions. Exact occurrence does not prove factual entailment or rewrite safety. The v1 `suggestion` is advisory text, not a replacement. Do not create selection, mutation, export, or materialization semantics.
|
|
94
|
+
|
|
95
|
+
### `analysis-replacements-review`
|
|
96
|
+
|
|
97
|
+
This reruns and preserves `baseline_analysis` and returns canonical exact before/proposed-after values for non-authoritative diff display. Preserve action/status, evidence, discard codes, and warnings. Exact occurrence does not certify factuality or rewrite safety. It creates no candidate, selection, application, export, persistence, source mutation, or materialization path.
|
|
98
|
+
|
|
99
|
+
### `variant-review`
|
|
100
|
+
|
|
101
|
+
Review only the bounded external proposal supplied by the caller. Use Core-assigned canonical retained-change IDs and discard codes. Exact evidence occurrence is structural grounding, not factual certification. Do not repair discarded changes or select changes for the user.
|
|
102
|
+
|
|
103
|
+
### `variant-materialize`
|
|
104
|
+
|
|
105
|
+
Call only after the user explicitly selects canonical IDs. Core revalidates the complete proposal and applies only selected changes. Preserve the exact baseline and assisted/non-authoritative labels. Never overwrite the original automatically or pass the assisted result to `analyze` or `job match`.
|
|
106
|
+
|
|
107
|
+
## Job operation rules
|
|
108
|
+
|
|
109
|
+
### `normalize`
|
|
110
|
+
|
|
111
|
+
Provide caller-supplied plain text only; never fetch a vacancy URL. Preserve required/preferred classifications, source spans, confidence, statuses, metadata, unclassified lines, and warnings. Lexical classification is not semantic certainty, and `not_detected` remains unverified.
|
|
112
|
+
|
|
113
|
+
### `match`
|
|
114
|
+
|
|
115
|
+
Use original resume and original job inputs matching the exported schema. Matching independently reruns both deterministic baselines and cannot consume assisted documents.
|
|
116
|
+
|
|
117
|
+
- Distinguish category `raw_score` from confidence-bounded `score`.
|
|
118
|
+
- Keep `confirmed_match`, `partial_match`, `likely_missing`, and `unverified` distinct.
|
|
119
|
+
- Cite resume/job spans when present and preserve null spans for derived signals.
|
|
120
|
+
- Accept only `normalized_exact` and returned `conservative_alias` skill equivalence.
|
|
121
|
+
- Never substitute adjacent technologies or repair a conservative false negative.
|
|
122
|
+
- Preserve top strengths/gaps, confidence bounds, warnings, and provisional recommendation status.
|
|
123
|
+
- Treat `apply_now`, `apply_after_small_edits`, and `improve_first` as bounded workflow guidance, never a hiring prediction.
|
|
124
|
+
- Review `unassessed_required_qualifications`; do not infer support or absence.
|
|
125
|
+
|
|
126
|
+
## Output discipline
|
|
127
|
+
|
|
128
|
+
- Treat returned JSON as authoritative and complete.
|
|
129
|
+
- Preserve every warning, evidence item, source span, basis ID, confidence value, uncertainty status, baseline boundary, discard code, limitation, and assisted/non-authoritative label.
|
|
130
|
+
- Do not reorder, truncate, silently repair, upgrade uncertainty into fact, or claim Core generated prose it only reviewed.
|
|
131
|
+
- Do not modify source documents unless the user separately requests and approves that change.
|
|
132
|
+
- Never place API keys in tool input, output, files, or logs.
|
|
133
|
+
|
|
134
|
+
See [`references/cli-contract.md`](references/cli-contract.md) for bundled-runtime selection and process details. Package installation and removal are in [`../../README.md`](../../README.md).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Bundled runtime contract reference
|
|
2
|
+
|
|
3
|
+
Use this reference only after reading the parent skill. Export exact schemas through `career_core_discover`; this file intentionally does not copy the authoritative schema catalog.
|
|
4
|
+
|
|
5
|
+
## Runtime selection
|
|
6
|
+
|
|
7
|
+
Normal operations use the reviewed package-owned runtime for exactly:
|
|
8
|
+
|
|
9
|
+
- `darwin-arm64`
|
|
10
|
+
- `linux-x64-gnu` with positive glibc detection
|
|
11
|
+
|
|
12
|
+
Selection order is a bounded absolute `CAREER_CLI_PATH` developer/recovery override first, then the verified bundled target. There is no PATH, sibling-checkout, Cargo, install-script, or download fallback. Windows, macOS x64, Linux arm64/musl, and unknown targets fail closed with `unsupported_platform`.
|
|
13
|
+
|
|
14
|
+
Before first bundled execution per process, pi-career verifies the regular file's exact mode, size, and SHA-256 against its committed runtime manifest. A mismatch fails as `bundled_runtime_invalid`. These errors are payload-free and must not be expanded with platform details, paths, hashes, environment values, or raw failures.
|
|
15
|
+
|
|
16
|
+
## Discovery and operations
|
|
17
|
+
|
|
18
|
+
Use only the three native tools:
|
|
19
|
+
|
|
20
|
+
- `career_core_discover`: `capabilities`, `schema-list`, `schema-export`
|
|
21
|
+
- `career_core_resume`: `evaluate`, `analyze`, `analysis-suggestions-review`, `analysis-replacements-review`, `normalize`, `enrich`, `variant-review`, `variant-materialize`
|
|
22
|
+
- `career_core_job`: `normalize`, `match`
|
|
23
|
+
|
|
24
|
+
Invoke only capabilities whose status is `available`. Pass one exact versioned JSON object in `input_json`; the adapter writes it only to runtime stdin. Do not concatenate document text into commands, place source content in argv, or infer schemas from prose.
|
|
25
|
+
|
|
26
|
+
## Machine framing
|
|
27
|
+
|
|
28
|
+
- The adapter uses `--format json-compact`; successful runtime output is one JSON document with one framing newline.
|
|
29
|
+
- Known diagnostics are one bounded `career.error.v1` on stderr with a nonzero status.
|
|
30
|
+
- The runtime makes no implicit network request and does not modify input.
|
|
31
|
+
- Single-document input is bounded at 262,144 UTF-8 bytes; composite job-match and variant envelopes are bounded at 1,048,576 bytes.
|
|
32
|
+
|
|
33
|
+
## Pi adapter framing
|
|
34
|
+
|
|
35
|
+
The native tools use direct `spawn(executable, argv, { shell: false })`, stdin-only document JSON, fixed operation mappings, timeout/cancellation cleanup, separate stdout/stderr capture bounds, fatal UTF-8 decoding, and exact-one-object success.
|
|
36
|
+
|
|
37
|
+
Successful JSON is returned complete, with only the single framing newline removed. The process adapter writes no payload/result files and has no model/provider/network behavior. The separate deterministic slash-command layer calls this process helper directly and owns only its bounded config, scan, UI, and custom-session-entry behavior.
|
|
38
|
+
|
|
39
|
+
Known adapter failures use `career.pi_error.v1`. Only `career_cli_error` may include a nested strictly validated allowlisted `career.error.v1`. Other errors do not expose raw diagnostics, input/output, executable paths, hashes, platform details, environment values, or Node/filesystem errors.
|
|
40
|
+
|
|
41
|
+
If a complete result exceeds 50,000 bytes or 2,000 lines, the tool fails as `result_too_large` or `result_too_many_lines`. Do not request or use partial output. Full-result export is not yet available through pi-career.
|
|
42
|
+
|
|
43
|
+
## Privacy
|
|
44
|
+
|
|
45
|
+
Pi may persist native tool arguments/results in session JSONL. Require an explicit decision before private use and recommend a new `pi --no-session` run when session persistence is not wanted. This is not secure erasure and is separate from consent for any external provider.
|