job-forge 2.14.38 → 2.14.40
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/.codex/config.toml +3 -2
- package/.cursor/mcp.json +8 -3
- package/.cursor/rules/main.mdc +1 -1
- package/.mcp.json +8 -3
- package/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +143 -191
- package/batch/README.md +1 -1
- package/bin/create-job-forge.mjs +8 -4
- package/bin/geometra-mcp-launcher.mjs +86 -0
- package/bin/job-forge.mjs +3 -0
- package/bin/sync.mjs +1 -1
- package/docs/ARCHITECTURE.md +20 -20
- package/docs/CUSTOMIZATION.md +20 -20
- package/docs/README.md +1 -1
- package/docs/SETUP.md +3 -3
- package/iso/instructions.md +1 -1
- package/iso/mcp.json +5 -1
- package/lib/jobforge-cache.mjs +1 -1
- package/lib/jobforge-canon.mjs +1 -1
- package/lib/jobforge-capabilities.mjs +1 -1
- package/lib/jobforge-context.mjs +1 -1
- package/lib/jobforge-contracts.mjs +1 -1
- package/lib/jobforge-facts.mjs +1 -1
- package/lib/jobforge-index.mjs +1 -1
- package/lib/jobforge-ledger.mjs +1 -1
- package/lib/jobforge-lineage.mjs +1 -1
- package/lib/jobforge-migrate.mjs +1 -1
- package/lib/jobforge-observability.mjs +1 -1
- package/lib/jobforge-postflight.mjs +1 -1
- package/lib/jobforge-preflight.mjs +1 -1
- package/lib/jobforge-prioritize.mjs +1 -1
- package/lib/jobforge-redact.mjs +1 -1
- package/lib/jobforge-score.mjs +1 -1
- package/lib/jobforge-timeline.mjs +1 -1
- package/models.yaml +1 -1
- package/modes/batch.md +1 -1
- package/modes/reference-portals.md +3 -1
- package/modes/reference-setup.md +1 -1
- package/opencode.json +7 -3
- package/package.json +26 -26
- package/scripts/batch-orchestrator.mjs +2 -2
- package/scripts/cache.mjs +1 -1
- package/scripts/canon.mjs +1 -1
- package/scripts/check-helper-integration.mjs +19 -19
- package/scripts/facts.mjs +1 -1
- package/scripts/guard.mjs +1 -1
- package/scripts/index.mjs +1 -1
- package/scripts/ledger.mjs +1 -1
- package/scripts/lineage.mjs +1 -1
- package/scripts/migrate.mjs +1 -1
- package/scripts/postflight.mjs +1 -1
- package/scripts/preflight.mjs +1 -1
- package/scripts/prioritize.mjs +1 -1
- package/scripts/redact.mjs +1 -1
- package/scripts/score.mjs +1 -1
- package/scripts/timeline.mjs +1 -1
- package/scripts/trace.mjs +1 -1
- package/templates/portals.example.yml +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "job-forge",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.40",
|
|
4
4
|
"description": "AI-powered job search pipeline built on opencode",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"author": "Charlie Greenman",
|
|
168
168
|
"repository": {
|
|
169
169
|
"type": "git",
|
|
170
|
-
"url": "https://github.com/
|
|
170
|
+
"url": "git+https://github.com/Agent-Pattern-Labs/JobForge.git"
|
|
171
171
|
},
|
|
172
172
|
"license": "MIT",
|
|
173
173
|
"engines": {
|
|
@@ -177,32 +177,32 @@
|
|
|
177
177
|
"fast-uri": "3.1.2"
|
|
178
178
|
},
|
|
179
179
|
"dependencies": {
|
|
180
|
-
"@
|
|
181
|
-
"@
|
|
182
|
-
"@
|
|
183
|
-
"@
|
|
184
|
-
"@
|
|
185
|
-
"@
|
|
186
|
-
"@
|
|
187
|
-
"@
|
|
188
|
-
"@
|
|
189
|
-
"@
|
|
190
|
-
"@
|
|
191
|
-
"@
|
|
192
|
-
"@
|
|
193
|
-
"@
|
|
194
|
-
"@
|
|
195
|
-
"@
|
|
196
|
-
"@
|
|
197
|
-
"@
|
|
198
|
-
"@
|
|
180
|
+
"@agent-pattern-labs/iso-cache": "^0.1.1",
|
|
181
|
+
"@agent-pattern-labs/iso-canon": "^0.1.1",
|
|
182
|
+
"@agent-pattern-labs/iso-capabilities": "^0.1.1",
|
|
183
|
+
"@agent-pattern-labs/iso-context": "^0.1.1",
|
|
184
|
+
"@agent-pattern-labs/iso-contract": "^0.1.1",
|
|
185
|
+
"@agent-pattern-labs/iso-facts": "^0.1.1",
|
|
186
|
+
"@agent-pattern-labs/iso-guard": "^0.1.1",
|
|
187
|
+
"@agent-pattern-labs/iso-index": "^0.1.1",
|
|
188
|
+
"@agent-pattern-labs/iso-ledger": "^0.1.1",
|
|
189
|
+
"@agent-pattern-labs/iso-lineage": "^0.1.1",
|
|
190
|
+
"@agent-pattern-labs/iso-migrate": "^0.1.1",
|
|
191
|
+
"@agent-pattern-labs/iso-orchestrator": "^0.2.1",
|
|
192
|
+
"@agent-pattern-labs/iso-postflight": "^0.1.1",
|
|
193
|
+
"@agent-pattern-labs/iso-preflight": "^0.1.1",
|
|
194
|
+
"@agent-pattern-labs/iso-prioritize": "^0.1.1",
|
|
195
|
+
"@agent-pattern-labs/iso-redact": "^0.1.1",
|
|
196
|
+
"@agent-pattern-labs/iso-score": "^0.1.1",
|
|
197
|
+
"@agent-pattern-labs/iso-timeline": "^0.1.1",
|
|
198
|
+
"@agent-pattern-labs/iso-trace": "^0.5.1",
|
|
199
199
|
"playwright": "^1.58.1"
|
|
200
200
|
},
|
|
201
201
|
"devDependencies": {
|
|
202
|
-
"@
|
|
203
|
-
"@
|
|
204
|
-
"@
|
|
205
|
-
"@
|
|
206
|
-
"@
|
|
202
|
+
"@agent-pattern-labs/agentmd": "^0.3.1",
|
|
203
|
+
"@agent-pattern-labs/iso": "^0.3.2",
|
|
204
|
+
"@agent-pattern-labs/iso-eval": "^0.4.1",
|
|
205
|
+
"@agent-pattern-labs/iso-harness": "^0.8.1",
|
|
206
|
+
"@agent-pattern-labs/iso-route": "^0.6.1"
|
|
207
207
|
}
|
|
208
208
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Durable JobForge batch runner powered by @
|
|
3
|
+
* Durable JobForge batch runner powered by @agent-pattern-labs/iso-orchestrator.
|
|
4
4
|
*
|
|
5
5
|
* This preserves the public batch-runner.sh interface while moving the
|
|
6
6
|
* load-bearing control loop into a resumable workflow:
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
import { dirname, join, resolve } from 'node:path';
|
|
26
26
|
import { fileURLToPath } from 'node:url';
|
|
27
27
|
|
|
28
|
-
import { runWorkflow } from '@
|
|
28
|
+
import { runWorkflow } from '@agent-pattern-labs/iso-orchestrator';
|
|
29
29
|
|
|
30
30
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
31
31
|
const PKG_ROOT = resolve(__dirname, '..');
|
package/scripts/cache.mjs
CHANGED
package/scripts/canon.mjs
CHANGED
|
@@ -17,29 +17,29 @@ const migrationScripts = migrationValue('jobforge-managed-scripts', '/scripts');
|
|
|
17
17
|
const migrationIgnores = migrationValue('jobforge-generated-ignores');
|
|
18
18
|
|
|
19
19
|
const groups = [
|
|
20
|
-
helper('trace', '@
|
|
20
|
+
helper('trace', '@agent-pattern-labs/iso-trace', ['list', 'stats', 'show']),
|
|
21
21
|
helper('telemetry', '', ['list', 'status', 'show', 'watch']),
|
|
22
|
-
helper('guard', '@
|
|
23
|
-
helper('ledger', '@
|
|
24
|
-
helper('capabilities', '@
|
|
25
|
-
helper('context', '@
|
|
26
|
-
helper('cache', '@
|
|
27
|
-
helper('index', '@
|
|
28
|
-
helper('facts', '@
|
|
29
|
-
helper('score', '@
|
|
30
|
-
helper('canon', '@
|
|
31
|
-
helper('preflight', '@
|
|
32
|
-
helper('postflight', '@
|
|
33
|
-
helper('timeline', '@
|
|
34
|
-
helper('prioritize', '@
|
|
35
|
-
helper('lineage', '@
|
|
36
|
-
helper('redact', '@
|
|
37
|
-
helper('migrate', '@
|
|
22
|
+
helper('guard', '@agent-pattern-labs/iso-guard', ['audit', 'explain'], { template: 'templates/guards/jobforge-baseline.yaml' }),
|
|
23
|
+
helper('ledger', '@agent-pattern-labs/iso-ledger', ['status', 'rebuild', 'verify', 'has', 'query'], { artifacts: ['.jobforge-ledger/'] }),
|
|
24
|
+
helper('capabilities', '@agent-pattern-labs/iso-capabilities', ['list', 'explain', 'check', 'render'], { template: 'templates/capabilities.json', migrated: true }),
|
|
25
|
+
helper('context', '@agent-pattern-labs/iso-context', ['list', 'explain', 'plan', 'check', 'render'], { template: 'templates/context.json', migrated: true }),
|
|
26
|
+
helper('cache', '@agent-pattern-labs/iso-cache', ['key', 'has', 'get', 'put', 'status', 'list', 'verify', 'prune'], { artifacts: ['.jobforge-cache/'], migrated: true }),
|
|
27
|
+
helper('index', '@agent-pattern-labs/iso-index', ['build', 'status', 'query', 'has', 'verify', 'explain'], { template: 'templates/index.json', artifacts: ['.jobforge-index.json'], migrated: true }),
|
|
28
|
+
helper('facts', '@agent-pattern-labs/iso-facts', ['build', 'status', 'verify', 'check', 'has', 'query', 'explain'], { template: 'templates/facts.json', artifacts: ['.jobforge-facts.json'], migrated: true }),
|
|
29
|
+
helper('score', '@agent-pattern-labs/iso-score', ['compute', 'verify', 'check', 'gate', 'compare', 'explain'], { template: 'templates/score.json', migrated: true }),
|
|
30
|
+
helper('canon', '@agent-pattern-labs/iso-canon', ['normalize', 'key', 'compare', 'explain'], { template: 'templates/canon.json', migrated: true }),
|
|
31
|
+
helper('preflight', '@agent-pattern-labs/iso-preflight', ['plan', 'check', 'explain'], { template: 'templates/preflight.json', artifacts: ['batch/preflight-candidates.json', 'batch/preflight-plan.json'], migrated: true }),
|
|
32
|
+
helper('postflight', '@agent-pattern-labs/iso-postflight', ['status', 'check', 'explain'], { template: 'templates/postflight.json', artifacts: ['batch/postflight-outcomes.json'], migrated: true }),
|
|
33
|
+
helper('timeline', '@agent-pattern-labs/iso-timeline', ['status', 'build', 'plan', 'due', 'check', 'verify', 'explain'], { template: 'templates/timeline.json', artifacts: ['.jobforge-timeline.json', '.jobforge-timeline-events.jsonl', 'data/timeline-events.jsonl'], migrated: true }),
|
|
34
|
+
helper('prioritize', '@agent-pattern-labs/iso-prioritize', ['status', 'items', 'build', 'rank', 'select', 'check', 'verify', 'explain'], { template: 'templates/prioritize.json', artifacts: ['.jobforge-prioritize.json', '.jobforge-prioritize-items.json'], migrated: true }),
|
|
35
|
+
helper('lineage', '@agent-pattern-labs/iso-lineage', ['status', 'record', 'check', 'stale', 'verify', 'explain'], { artifacts: ['.jobforge-lineage.json'], migrated: true }),
|
|
36
|
+
helper('redact', '@agent-pattern-labs/iso-redact', ['scan', 'verify', 'apply', 'explain'], { template: 'templates/redact.json', artifacts: ['.jobforge-redacted/'], migrated: true }),
|
|
37
|
+
helper('migrate', '@agent-pattern-labs/iso-migrate', ['plan', 'apply', 'check', 'explain'], { template: 'templates/migrations.json', migrated: true }),
|
|
38
38
|
];
|
|
39
39
|
|
|
40
40
|
const packageOnly = [
|
|
41
|
-
{ id: 'contract', pkg: '@
|
|
42
|
-
{ id: 'orchestrator', pkg: '@
|
|
41
|
+
{ id: 'contract', pkg: '@agent-pattern-labs/iso-contract', template: 'templates/contracts.json', needles: ['templates/contracts.json', 'tracker-line'] },
|
|
42
|
+
{ id: 'orchestrator', pkg: '@agent-pattern-labs/iso-orchestrator', file: 'scripts/batch-orchestrator.mjs', needles: ['iso-orchestrator'] },
|
|
43
43
|
];
|
|
44
44
|
|
|
45
45
|
const errors = [];
|
package/scripts/facts.mjs
CHANGED
package/scripts/guard.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { dirname, join, relative, resolve } from 'path';
|
|
4
4
|
import { fileURLToPath } from 'url';
|
|
5
|
-
import { audit, formatAuditResult, formatPolicyExplanation, loadPolicy, resultFails } from '@
|
|
5
|
+
import { audit, formatAuditResult, formatPolicyExplanation, loadPolicy, resultFails } from '@agent-pattern-labs/iso-guard';
|
|
6
6
|
import {
|
|
7
7
|
buildSessionGraph,
|
|
8
8
|
collectDispatchCalls,
|
package/scripts/index.mjs
CHANGED
package/scripts/ledger.mjs
CHANGED
package/scripts/lineage.mjs
CHANGED
package/scripts/migrate.mjs
CHANGED
package/scripts/postflight.mjs
CHANGED
package/scripts/preflight.mjs
CHANGED
package/scripts/prioritize.mjs
CHANGED
package/scripts/redact.mjs
CHANGED
package/scripts/score.mjs
CHANGED
package/scripts/timeline.mjs
CHANGED
package/scripts/trace.mjs
CHANGED
|
@@ -200,7 +200,7 @@ function oneLine(value, max) {
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
function resolveIsoTraceCli() {
|
|
203
|
-
const pkgJsonPath = require.resolve('@
|
|
203
|
+
const pkgJsonPath = require.resolve('@agent-pattern-labs/iso-trace/package.json');
|
|
204
204
|
return join(dirname(pkgJsonPath), 'dist/cli.js');
|
|
205
205
|
}
|
|
206
206
|
|
|
@@ -3222,7 +3222,7 @@ cross_company_feeds:
|
|
|
3222
3222
|
type: remoteok
|
|
3223
3223
|
url: https://remoteok.com/api
|
|
3224
3224
|
# Required — RemoteOK returns 403 without a browser-like UA.
|
|
3225
|
-
user_agent: "Mozilla/5.0 (compatible; JobForgeScanner/1.0; +https://github.com/
|
|
3225
|
+
user_agent: "Mozilla/5.0 (compatible; JobForgeScanner/1.0; +https://github.com/Agent-Pattern-Labs/JobForge)"
|
|
3226
3226
|
# Pre-filter on entry.tags (case-insensitive substring match against the
|
|
3227
3227
|
# array). Row passes if ANY positive matches AND NO negative matches.
|
|
3228
3228
|
tag_filter:
|