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.
Files changed (59) hide show
  1. package/.codex/config.toml +3 -2
  2. package/.cursor/mcp.json +8 -3
  3. package/.cursor/rules/main.mdc +1 -1
  4. package/.mcp.json +8 -3
  5. package/AGENTS.md +1 -1
  6. package/CLAUDE.md +1 -1
  7. package/README.md +143 -191
  8. package/batch/README.md +1 -1
  9. package/bin/create-job-forge.mjs +8 -4
  10. package/bin/geometra-mcp-launcher.mjs +86 -0
  11. package/bin/job-forge.mjs +3 -0
  12. package/bin/sync.mjs +1 -1
  13. package/docs/ARCHITECTURE.md +20 -20
  14. package/docs/CUSTOMIZATION.md +20 -20
  15. package/docs/README.md +1 -1
  16. package/docs/SETUP.md +3 -3
  17. package/iso/instructions.md +1 -1
  18. package/iso/mcp.json +5 -1
  19. package/lib/jobforge-cache.mjs +1 -1
  20. package/lib/jobforge-canon.mjs +1 -1
  21. package/lib/jobforge-capabilities.mjs +1 -1
  22. package/lib/jobforge-context.mjs +1 -1
  23. package/lib/jobforge-contracts.mjs +1 -1
  24. package/lib/jobforge-facts.mjs +1 -1
  25. package/lib/jobforge-index.mjs +1 -1
  26. package/lib/jobforge-ledger.mjs +1 -1
  27. package/lib/jobforge-lineage.mjs +1 -1
  28. package/lib/jobforge-migrate.mjs +1 -1
  29. package/lib/jobforge-observability.mjs +1 -1
  30. package/lib/jobforge-postflight.mjs +1 -1
  31. package/lib/jobforge-preflight.mjs +1 -1
  32. package/lib/jobforge-prioritize.mjs +1 -1
  33. package/lib/jobforge-redact.mjs +1 -1
  34. package/lib/jobforge-score.mjs +1 -1
  35. package/lib/jobforge-timeline.mjs +1 -1
  36. package/models.yaml +1 -1
  37. package/modes/batch.md +1 -1
  38. package/modes/reference-portals.md +3 -1
  39. package/modes/reference-setup.md +1 -1
  40. package/opencode.json +7 -3
  41. package/package.json +26 -26
  42. package/scripts/batch-orchestrator.mjs +2 -2
  43. package/scripts/cache.mjs +1 -1
  44. package/scripts/canon.mjs +1 -1
  45. package/scripts/check-helper-integration.mjs +19 -19
  46. package/scripts/facts.mjs +1 -1
  47. package/scripts/guard.mjs +1 -1
  48. package/scripts/index.mjs +1 -1
  49. package/scripts/ledger.mjs +1 -1
  50. package/scripts/lineage.mjs +1 -1
  51. package/scripts/migrate.mjs +1 -1
  52. package/scripts/postflight.mjs +1 -1
  53. package/scripts/preflight.mjs +1 -1
  54. package/scripts/prioritize.mjs +1 -1
  55. package/scripts/redact.mjs +1 -1
  56. package/scripts/score.mjs +1 -1
  57. package/scripts/timeline.mjs +1 -1
  58. package/scripts/trace.mjs +1 -1
  59. 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.38",
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/razroo/JobForge"
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
- "@razroo/iso-cache": "^0.1.0",
181
- "@razroo/iso-canon": "^0.1.0",
182
- "@razroo/iso-capabilities": "^0.1.0",
183
- "@razroo/iso-context": "^0.1.0",
184
- "@razroo/iso-contract": "^0.1.0",
185
- "@razroo/iso-facts": "^0.1.0",
186
- "@razroo/iso-guard": "^0.1.0",
187
- "@razroo/iso-index": "^0.1.0",
188
- "@razroo/iso-ledger": "^0.1.0",
189
- "@razroo/iso-lineage": "^0.1.0",
190
- "@razroo/iso-migrate": "^0.1.0",
191
- "@razroo/iso-orchestrator": "^0.2.0",
192
- "@razroo/iso-postflight": "^0.1.0",
193
- "@razroo/iso-preflight": "^0.1.0",
194
- "@razroo/iso-prioritize": "^0.1.0",
195
- "@razroo/iso-redact": "^0.1.0",
196
- "@razroo/iso-score": "^0.1.0",
197
- "@razroo/iso-timeline": "^0.1.0",
198
- "@razroo/iso-trace": "^0.5.0",
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
- "@razroo/agentmd": "^0.3.0",
203
- "@razroo/iso": "^0.3.1",
204
- "@razroo/iso-eval": "^0.4.0",
205
- "@razroo/iso-harness": "^0.8.0",
206
- "@razroo/iso-route": "^0.5.3"
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 @razroo/iso-orchestrator.
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 '@razroo/iso-orchestrator';
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
@@ -5,7 +5,7 @@ import {
5
5
  formatCacheEntries,
6
6
  formatPruneResult,
7
7
  formatVerifyResult,
8
- } from '@razroo/iso-cache';
8
+ } from '@agent-pattern-labs/iso-cache';
9
9
  import { PROJECT_DIR } from '../tracker-lib.mjs';
10
10
  import {
11
11
  DEFAULT_JD_TTL_MS,
package/scripts/canon.mjs CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  formatCanonResult,
6
6
  formatCompareResult,
7
7
  formatConfigSummary,
8
- } from '@razroo/iso-canon';
8
+ } from '@agent-pattern-labs/iso-canon';
9
9
  import { PROJECT_DIR } from '../tracker-lib.mjs';
10
10
  import {
11
11
  canonicalizeJobForgeEntity,
@@ -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', '@razroo/iso-trace', ['list', 'stats', 'show']),
20
+ helper('trace', '@agent-pattern-labs/iso-trace', ['list', 'stats', 'show']),
21
21
  helper('telemetry', '', ['list', 'status', 'show', 'watch']),
22
- helper('guard', '@razroo/iso-guard', ['audit', 'explain'], { template: 'templates/guards/jobforge-baseline.yaml' }),
23
- helper('ledger', '@razroo/iso-ledger', ['status', 'rebuild', 'verify', 'has', 'query'], { artifacts: ['.jobforge-ledger/'] }),
24
- helper('capabilities', '@razroo/iso-capabilities', ['list', 'explain', 'check', 'render'], { template: 'templates/capabilities.json', migrated: true }),
25
- helper('context', '@razroo/iso-context', ['list', 'explain', 'plan', 'check', 'render'], { template: 'templates/context.json', migrated: true }),
26
- helper('cache', '@razroo/iso-cache', ['key', 'has', 'get', 'put', 'status', 'list', 'verify', 'prune'], { artifacts: ['.jobforge-cache/'], migrated: true }),
27
- helper('index', '@razroo/iso-index', ['build', 'status', 'query', 'has', 'verify', 'explain'], { template: 'templates/index.json', artifacts: ['.jobforge-index.json'], migrated: true }),
28
- helper('facts', '@razroo/iso-facts', ['build', 'status', 'verify', 'check', 'has', 'query', 'explain'], { template: 'templates/facts.json', artifacts: ['.jobforge-facts.json'], migrated: true }),
29
- helper('score', '@razroo/iso-score', ['compute', 'verify', 'check', 'gate', 'compare', 'explain'], { template: 'templates/score.json', migrated: true }),
30
- helper('canon', '@razroo/iso-canon', ['normalize', 'key', 'compare', 'explain'], { template: 'templates/canon.json', migrated: true }),
31
- helper('preflight', '@razroo/iso-preflight', ['plan', 'check', 'explain'], { template: 'templates/preflight.json', artifacts: ['batch/preflight-candidates.json', 'batch/preflight-plan.json'], migrated: true }),
32
- helper('postflight', '@razroo/iso-postflight', ['status', 'check', 'explain'], { template: 'templates/postflight.json', artifacts: ['batch/postflight-outcomes.json'], migrated: true }),
33
- helper('timeline', '@razroo/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', '@razroo/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', '@razroo/iso-lineage', ['status', 'record', 'check', 'stale', 'verify', 'explain'], { artifacts: ['.jobforge-lineage.json'], migrated: true }),
36
- helper('redact', '@razroo/iso-redact', ['scan', 'verify', 'apply', 'explain'], { template: 'templates/redact.json', artifacts: ['.jobforge-redacted/'], migrated: true }),
37
- helper('migrate', '@razroo/iso-migrate', ['plan', 'apply', 'check', 'explain'], { template: 'templates/migrations.json', migrated: true }),
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: '@razroo/iso-contract', template: 'templates/contracts.json', needles: ['templates/contracts.json', 'tracker-line'] },
42
- { id: 'orchestrator', pkg: '@razroo/iso-orchestrator', file: 'scripts/batch-orchestrator.mjs', needles: ['iso-orchestrator'] },
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
@@ -7,7 +7,7 @@ import {
7
7
  formatConfigSummary,
8
8
  formatFacts,
9
9
  formatVerifyResult,
10
- } from '@razroo/iso-facts';
10
+ } from '@agent-pattern-labs/iso-facts';
11
11
  import { PROJECT_DIR } from '../tracker-lib.mjs';
12
12
  import {
13
13
  buildJobForgeFacts,
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 '@razroo/iso-guard';
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
@@ -6,7 +6,7 @@ import {
6
6
  formatConfigSummary,
7
7
  formatIndexRecords,
8
8
  formatVerifyResult,
9
- } from '@razroo/iso-index';
9
+ } from '@agent-pattern-labs/iso-index';
10
10
  import { PROJECT_DIR } from '../tracker-lib.mjs';
11
11
  import {
12
12
  buildJobForgeIndex,
@@ -6,7 +6,7 @@ import {
6
6
  formatEvents,
7
7
  formatVerifyResult,
8
8
  queryEvents,
9
- } from '@razroo/iso-ledger';
9
+ } from '@agent-pattern-labs/iso-ledger';
10
10
  import { PROJECT_DIR, readAllEntries } from '../tracker-lib.mjs';
11
11
  import {
12
12
  appendJobForgeEvent,
@@ -8,7 +8,7 @@ import {
8
8
  formatStaleResult,
9
9
  formatVerifyResult,
10
10
  parseJson,
11
- } from '@razroo/iso-lineage';
11
+ } from '@agent-pattern-labs/iso-lineage';
12
12
  import { PROJECT_DIR } from '../tracker-lib.mjs';
13
13
  import {
14
14
  checkJobForgeLineage,
@@ -4,7 +4,7 @@ import { relative } from 'path';
4
4
  import {
5
5
  formatConfigSummary,
6
6
  formatMigrationResult,
7
- } from '@razroo/iso-migrate';
7
+ } from '@agent-pattern-labs/iso-migrate';
8
8
  import { PROJECT_DIR } from '../tracker-lib.mjs';
9
9
  import {
10
10
  jobForgeMigrationConfigPath,
@@ -8,7 +8,7 @@ import {
8
8
  loadPostflightConfig,
9
9
  parseJson,
10
10
  settlePostflight,
11
- } from '@razroo/iso-postflight';
11
+ } from '@agent-pattern-labs/iso-postflight';
12
12
  import { PROJECT_DIR } from '../tracker-lib.mjs';
13
13
  import {
14
14
  jobForgePostflightConfigPath,
@@ -8,7 +8,7 @@ import {
8
8
  loadPreflightConfig,
9
9
  parseJson,
10
10
  planPreflight,
11
- } from '@razroo/iso-preflight';
11
+ } from '@agent-pattern-labs/iso-preflight';
12
12
  import { PROJECT_DIR } from '../tracker-lib.mjs';
13
13
  import {
14
14
  jobForgePreflightConfigPath,
@@ -9,7 +9,7 @@ import {
9
9
  formatVerifyResult,
10
10
  loadPrioritizeItems,
11
11
  parseJson,
12
- } from '@razroo/iso-prioritize';
12
+ } from '@agent-pattern-labs/iso-prioritize';
13
13
  import { PROJECT_DIR } from '../tracker-lib.mjs';
14
14
  import {
15
15
  buildJobForgePrioritizeItems,
@@ -9,7 +9,7 @@ import {
9
9
  parseJson,
10
10
  redactText,
11
11
  scanSources,
12
- } from '@razroo/iso-redact';
12
+ } from '@agent-pattern-labs/iso-redact';
13
13
  import { PROJECT_DIR } from '../tracker-lib.mjs';
14
14
  import {
15
15
  jobForgeRedactConfigPath,
package/scripts/score.mjs CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  formatGateResult,
10
10
  formatScoreResult,
11
11
  formatVerifyResult,
12
- } from '@razroo/iso-score';
12
+ } from '@agent-pattern-labs/iso-score';
13
13
  import { PROJECT_DIR } from '../tracker-lib.mjs';
14
14
  import {
15
15
  checkJobForgeScore,
@@ -7,7 +7,7 @@ import {
7
7
  formatConfigSummary,
8
8
  formatTimelineResult,
9
9
  formatVerifyResult,
10
- } from '@razroo/iso-timeline';
10
+ } from '@agent-pattern-labs/iso-timeline';
11
11
  import { PROJECT_DIR } from '../tracker-lib.mjs';
12
12
  import {
13
13
  buildJobForgeTimeline,
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('@razroo/iso-trace/package.json');
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/razroo/JobForge)"
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: