job-forge 2.7.0 → 2.9.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.
@@ -16,11 +16,6 @@ tools:
16
16
  gmail_get_message: true
17
17
  temperature: 0.1
18
18
  reasoningEffort: minimal
19
- fallback_models:
20
- - opencode/minimax-m2.5-free
21
- - opencode/nemotron-3-super-free
22
- - opencode-go/minimax-m2.7
23
- - opencode/glm-5.1
24
19
  ---
25
20
 
26
21
  You are the @general-free subagent. You run on a free-tier model, which means the orchestrator has delegated this task to you **specifically because the work is procedural**: deterministic steps, scripted outputs, no nuanced writing required.
@@ -7,8 +7,6 @@ tools:
7
7
  gmail_*: false
8
8
  temperature: 0.3
9
9
  reasoningEffort: medium
10
- fallback_models:
11
- - opencode/claude-haiku-4-5
12
10
  ---
13
11
 
14
12
  You are the @general-paid subagent. The orchestrator delegated this task to you because it requires quality writing or judgment — the kind of work `@general-free` isn't well-suited for.
@@ -13,9 +13,6 @@ tools:
13
13
  task: false
14
14
  temperature: 0
15
15
  reasoningEffort: none
16
- fallback_models:
17
- - opencode/big-pickle
18
- - opencode/nemotron-3-super-free
19
16
  ---
20
17
 
21
18
  You are the @glm-minimal subagent. You handle narrow, one-shot extractions where the orchestrator has pre-digested the context and just needs you to do a specific transform.
@@ -1,19 +1,14 @@
1
1
  ---
2
2
  description: Procedural worker on free-tier model. Use for form filling via Geometra, tracker updates, TSV merges, scan dedup, OTP retrieval, and other mechanical/scripted tasks where quality-sensitive text generation is NOT required.
3
3
  targets:
4
- # Claude Code / Cursor / Codex: no inline override iso-route's resolved
5
- # role map stamps model from models.yaml (role name = filename slug).
6
- # OpenCode keeps its provider-specific model identifier inline.
4
+ # No inline model: iso-route 0.2.0+ stamps provider/model from the
5
+ # per-target resolution in models.yaml (role = filename slug). Claude
6
+ # Code reads .claude/iso-route.resolved.json; OpenCode reads
7
+ # opencode.json's agent.<slug>.model (iso-harness 0.6.0+).
7
8
  opencode:
8
9
  mode: subagent
9
- model: opencode/big-pickle
10
10
  temperature: 0.1
11
11
  reasoningEffort: minimal
12
- fallback_models:
13
- - opencode/minimax-m2.5-free
14
- - opencode/nemotron-3-super-free
15
- - opencode-go/minimax-m2.7
16
- - opencode/glm-5.1
17
12
  tools:
18
13
  geometra_connect: true
19
14
  geometra_page_model: true
@@ -1,16 +1,14 @@
1
1
  ---
2
2
  description: Quality-sensitive worker on paid model. Use for offer evaluation narratives (Blocks A-F), cover letter generation, "Why X?" form answers, interview STAR stories, and other tasks where writing quality and judgment matter.
3
3
  targets:
4
- # Claude Code / Cursor / Codex: no inline override iso-route's resolved
5
- # role map stamps model from models.yaml (role name = filename slug).
6
- # OpenCode keeps its provider-specific model identifier inline.
4
+ # No inline model: iso-route 0.2.0+ stamps provider/model from the
5
+ # per-target resolution in models.yaml (role = filename slug). Claude
6
+ # Code reads .claude/iso-route.resolved.json; OpenCode reads
7
+ # opencode.json's agent.<slug>.model (iso-harness 0.6.0+).
7
8
  opencode:
8
9
  mode: subagent
9
- model: opencode/glm-5.1
10
10
  temperature: 0.3
11
11
  reasoningEffort: medium
12
- fallback_models:
13
- - opencode/claude-haiku-4-5
14
12
  tools:
15
13
  geometra_*: false
16
14
  gmail_*: false
@@ -1,17 +1,14 @@
1
1
  ---
2
2
  description: Narrow-scope extractor on free-tier model. Use for single-purpose tasks where the orchestrator passes the exact input and expects a small, structured output — e.g., "extract these 8 fields from this JD text" or "parse this form schema into a label→type map". NOT for multi-step workflows.
3
3
  targets:
4
- # Claude Code / Cursor / Codex: no inline override iso-route's resolved
5
- # role map stamps model from models.yaml (role name = filename slug).
6
- # OpenCode keeps its provider-specific model identifier inline.
4
+ # No inline model: iso-route 0.2.0+ stamps provider/model from the
5
+ # per-target resolution in models.yaml (role = filename slug). Claude
6
+ # Code reads .claude/iso-route.resolved.json; OpenCode reads
7
+ # opencode.json's agent.<slug>.model (iso-harness 0.6.0+).
7
8
  opencode:
8
9
  mode: subagent
9
- model: opencode/minimax-m2.5-free
10
10
  temperature: 0
11
11
  reasoningEffort: none
12
- fallback_models:
13
- - opencode/big-pickle
14
- - opencode/nemotron-3-super-free
15
12
  tools:
16
13
  geometra_*: false
17
14
  gmail_*: false
package/models.yaml CHANGED
@@ -1,46 +1,63 @@
1
1
  # JobForge model policy — one authored source, fanned out to each harness.
2
2
  #
3
3
  # `@razroo/iso-route build` reads this file and writes:
4
- # - .claude/settings.json (default model for Claude Code)
4
+ # - .claude/settings.json (default Claude Code model)
5
5
  # - .claude/iso-route.resolved.json (role map iso-harness stamps onto
6
6
  # .claude/agents/*.md frontmatter)
7
- # - .codex/config.toml (model + [profiles.*] + providers;
8
- # iso-harness then merges its [mcp_servers.*]
9
- # sections on top see @razroo/iso-harness
10
- # 0.5.0+ for the merge behavior)
11
- # - opencode.json (top-level model, plus per-agent overrides
12
- # that don't clobber inline opencode-specific
13
- # model IDs in iso/agents/*.md)
14
- # - .cursor/iso-route.md (advisory README — Cursor has no programmatic
15
- # way to bind a model to a rule or agent)
7
+ # - .codex/config.toml (model + [profiles.*] + providers;
8
+ # iso-harness merges [mcp_servers.*]
9
+ # on top of this via v0.5+)
10
+ # - opencode.json (top-level + per-agent overrides;
11
+ # iso-harness preserves these when
12
+ # layering mcp on top)
13
+ # - .cursor/iso-route.md (advisory Cursor has no
14
+ # programmatic model binding)
16
15
  #
17
- # Roles map 1:1 to the subagent files in iso/agents/ (by slug). JobForge
18
- # agents opt in to each harness by removing the `targets.<harness>: skip`
19
- # line then iso-harness stamps the model from the resolved map below.
16
+ # Each role maps 1:1 to a subagent file in iso/agents/ (by filename slug).
17
+ # The `targets.<harness>` sub-object overrides provider+model when
18
+ # emitting for that specific harness; otherwise the generic policy on the
19
+ # role is used (iso-route v0.2+).
20
20
 
21
21
  default:
22
22
  provider: anthropic
23
23
  model: claude-sonnet-4-6
24
+ targets:
25
+ # OpenCode users default to the OpenCode proxy's paid-tier chat model
26
+ # for the top-level (non-subagent) session.
27
+ opencode:
28
+ provider: opencode
29
+ model: opencode/glm-5.1
24
30
 
25
31
  roles:
26
32
  # @general-free — procedural worker (form-fill, TSV merge, OTP retrieval,
27
- # scan extraction). Cheap model; deterministic work where quality-sensitive
28
- # prose is NOT required. Matches D2 in iso/instructions.md.
33
+ # scan metadata extraction). Runs on each harness's cheapest-reliable
34
+ # model; OpenCode gets the free-tier proxy so batch applies cost $0.
29
35
  general-free:
30
36
  provider: anthropic
31
37
  model: claude-haiku-4-5
38
+ targets:
39
+ opencode:
40
+ provider: opencode
41
+ model: opencode/big-pickle
32
42
 
33
43
  # @general-paid — quality-sensitive worker (Blocks A-F evaluation, cover
34
- # letters, STAR stories, LinkedIn outreach). Matches D2 in iso/instructions.md.
35
- # Upgrade target for high-stakes applies per D3.
44
+ # letters, STAR stories, LinkedIn outreach). Upgrade target for
45
+ # high-stakes applies per [D3] in iso/instructions.md.
36
46
  general-paid:
37
47
  provider: anthropic
38
48
  model: claude-sonnet-4-6
49
+ targets:
50
+ opencode:
51
+ provider: opencode
52
+ model: opencode/glm-5.1
39
53
 
40
- # @glm-minimal — narrow ≤5K-input one-shot extractor / classifier. Runs on
41
- # the cheap tier because inputs are small and outputs are structured; no
42
- # context budget pressure. Named for the OpenCode provider it was tuned
43
- # against; on other harnesses, Haiku is the closest equivalent.
54
+ # @glm-minimal — narrow ≤5K-input one-shot extractor / classifier. Named
55
+ # for its original tuning target (Minimax on the OpenCode proxy); on
56
+ # harnesses without that proxy it falls through to a cheap general model.
44
57
  glm-minimal:
45
58
  provider: anthropic
46
59
  model: claude-haiku-4-5
60
+ targets:
61
+ opencode:
62
+ provider: opencode
63
+ model: opencode/minimax-m2.5-free
package/opencode.json CHANGED
@@ -1,20 +1,15 @@
1
1
  {
2
2
  "$schema": "https://opencode.ai/config.json",
3
- "model": "anthropic/claude-sonnet-4-6",
3
+ "model": "opencode/glm-5.1",
4
4
  "agent": {
5
5
  "general-free": {
6
- "model": "anthropic/claude-haiku-4-5"
6
+ "model": "opencode/big-pickle"
7
7
  },
8
8
  "general-paid": {
9
- "model": "anthropic/claude-sonnet-4-6"
9
+ "model": "opencode/glm-5.1"
10
10
  },
11
11
  "glm-minimal": {
12
- "model": "anthropic/claude-haiku-4-5"
13
- }
14
- },
15
- "provider": {
16
- "anthropic": {
17
- "npm": "@ai-sdk/anthropic"
12
+ "model": "opencode/minimax-m2.5-free"
18
13
  }
19
14
  },
20
15
  "mcp": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "job-forge",
3
- "version": "2.7.0",
3
+ "version": "2.9.0",
4
4
  "description": "AI-powered job search pipeline built on opencode",
5
5
  "type": "module",
6
6
  "bin": {
@@ -82,9 +82,9 @@
82
82
  "playwright": "^1.58.1"
83
83
  },
84
84
  "devDependencies": {
85
- "@razroo/iso": "^0.2.1",
86
- "@razroo/iso-harness": "^0.5.0",
87
- "@razroo/iso-route": "^0.1.0",
85
+ "@razroo/iso": "^0.2.3",
86
+ "@razroo/iso-harness": "^0.6.0",
87
+ "@razroo/iso-route": "^0.2.0",
88
88
  "@razroo/iso-trace": "^0.1.0"
89
89
  }
90
90
  }