ultimate-pi 0.3.0 → 0.4.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.
Files changed (116) hide show
  1. package/.agents/skills/harness-decisions/SKILL.md +37 -0
  2. package/.agents/skills/harness-governor/SKILL.md +1 -1
  3. package/.agents/skills/harness-orchestration/SKILL.md +54 -0
  4. package/.agents/skills/harness-plan/SKILL.md +4 -3
  5. package/.agents/skills/harness-sentrux-setup/SKILL.md +57 -0
  6. package/.agents/skills/scrapling-web/SKILL.md +93 -0
  7. package/.pi/PACKAGING.md +2 -2
  8. package/.pi/SYSTEM.md +13 -15
  9. package/.pi/agents/harness/adversary.md +3 -0
  10. package/.pi/agents/harness/evaluator.md +3 -0
  11. package/.pi/agents/harness/executor.md +4 -1
  12. package/.pi/agents/harness/meta-optimizer.md +2 -1
  13. package/.pi/agents/harness/planner.md +22 -1
  14. package/.pi/agents/harness/sentrux-bootstrap.md +42 -0
  15. package/.pi/agents/harness/tie-breaker.md +2 -0
  16. package/.pi/extensions/harness-ask-user.ts +74 -0
  17. package/.pi/extensions/harness-subagents.ts +9 -0
  18. package/.pi/extensions/lib/ask-user/dialog.ts +260 -0
  19. package/.pi/extensions/lib/ask-user/fallback.ts +78 -0
  20. package/.pi/extensions/lib/ask-user/render.ts +66 -0
  21. package/.pi/extensions/lib/ask-user/schema.ts +69 -0
  22. package/.pi/extensions/lib/ask-user/types.ts +41 -0
  23. package/.pi/extensions/lib/ask-user/validate-core.mjs +79 -0
  24. package/.pi/extensions/lib/ask-user/validate.ts +92 -0
  25. package/.pi/extensions/lib/harness-subagents/agent-loader.ts +126 -0
  26. package/.pi/extensions/lib/harness-subagents/agent-manifest.ts +119 -0
  27. package/.pi/extensions/lib/harness-subagents/agent-parser.ts +87 -0
  28. package/.pi/extensions/lib/harness-subagents/blackboard-tool.ts +118 -0
  29. package/.pi/extensions/lib/harness-subagents/blackboard.ts +175 -0
  30. package/.pi/extensions/lib/harness-subagents/spawn-policy.ts +27 -0
  31. package/.pi/extensions/lib/harness-subagents/types-blackboard.ts +27 -0
  32. package/.pi/extensions/lib/harness-subagents/vendored/agent-manager.ts +553 -0
  33. package/.pi/extensions/lib/harness-subagents/vendored/agent-runner.ts +637 -0
  34. package/.pi/extensions/lib/harness-subagents/vendored/agent-types.ts +175 -0
  35. package/.pi/extensions/lib/harness-subagents/vendored/context.ts +59 -0
  36. package/.pi/extensions/lib/harness-subagents/vendored/cross-extension-rpc.ts +134 -0
  37. package/.pi/extensions/lib/harness-subagents/vendored/custom-agents.ts +5 -0
  38. package/.pi/extensions/lib/harness-subagents/vendored/default-agents.ts +123 -0
  39. package/.pi/extensions/lib/harness-subagents/vendored/env.ts +43 -0
  40. package/.pi/extensions/lib/harness-subagents/vendored/group-join.ts +144 -0
  41. package/.pi/extensions/lib/harness-subagents/vendored/index.ts +2447 -0
  42. package/.pi/extensions/lib/harness-subagents/vendored/invocation-config.ts +52 -0
  43. package/.pi/extensions/lib/harness-subagents/vendored/memory.ts +182 -0
  44. package/.pi/extensions/lib/harness-subagents/vendored/model-resolver.ts +92 -0
  45. package/.pi/extensions/lib/harness-subagents/vendored/output-file.ts +115 -0
  46. package/.pi/extensions/lib/harness-subagents/vendored/prompts.ts +103 -0
  47. package/.pi/extensions/lib/harness-subagents/vendored/schedule-store.ts +177 -0
  48. package/.pi/extensions/lib/harness-subagents/vendored/schedule.ts +416 -0
  49. package/.pi/extensions/lib/harness-subagents/vendored/settings.ts +210 -0
  50. package/.pi/extensions/lib/harness-subagents/vendored/skill-loader.ts +108 -0
  51. package/.pi/extensions/lib/harness-subagents/vendored/types.ts +187 -0
  52. package/.pi/extensions/lib/harness-subagents/vendored/ui/agent-widget.ts +637 -0
  53. package/.pi/extensions/lib/harness-subagents/vendored/ui/conversation-viewer.ts +324 -0
  54. package/.pi/extensions/lib/harness-subagents/vendored/ui/schedule-menu.ts +110 -0
  55. package/.pi/extensions/lib/harness-subagents/vendored/usage.ts +71 -0
  56. package/.pi/extensions/lib/harness-subagents/vendored/worktree.ts +195 -0
  57. package/.pi/extensions/policy-gate.ts +18 -0
  58. package/.pi/extensions/provider-payload-sanitize.ts +66 -0
  59. package/.pi/harness/README.md +2 -1
  60. package/.pi/harness/agents.manifest.json +80 -0
  61. package/.pi/harness/docs/adrs/0009-sentrux-rules-lifecycle.md +9 -5
  62. package/.pi/harness/env.harness.template +28 -0
  63. package/.pi/harness/sentrux/architecture.manifest.json +6 -1
  64. package/.pi/prompts/harness-auto.md +2 -2
  65. package/.pi/prompts/harness-plan.md +2 -2
  66. package/.pi/prompts/harness-router-tune.md +2 -2
  67. package/.pi/prompts/harness-run.md +1 -0
  68. package/.pi/prompts/harness-setup.md +182 -339
  69. package/.pi/scripts/README.md +6 -1
  70. package/.pi/scripts/harness-agents-manifest.mjs +123 -0
  71. package/.pi/scripts/harness-cli-verify.sh +60 -11
  72. package/.pi/scripts/harness-generate-model-router.mjs +242 -0
  73. package/.pi/scripts/harness-graphify-bootstrap.sh +1 -6
  74. package/.pi/scripts/harness-resolve-up-pkg.mjs +71 -0
  75. package/.pi/scripts/harness-seed-project-contracts.mjs +81 -0
  76. package/.pi/scripts/harness-sentrux-bootstrap.mjs +146 -0
  77. package/.pi/scripts/harness-sync-env.mjs +148 -0
  78. package/.pi/scripts/harness-verify.mjs +19 -0
  79. package/.pi/scripts/harness-web-search.md +33 -0
  80. package/.pi/scripts/harness-web.py +177 -0
  81. package/.pi/scripts/harness_web/__init__.py +1 -0
  82. package/.pi/scripts/harness_web/config.py +80 -0
  83. package/.pi/scripts/harness_web/output.py +55 -0
  84. package/.pi/scripts/harness_web/scrape.py +120 -0
  85. package/.pi/scripts/harness_web/search_ddg.py +106 -0
  86. package/.pi/scripts/release.sh +338 -0
  87. package/.pi/scripts/sentrux-rules-sync.mjs +29 -7
  88. package/.pi/settings.example.json +0 -1
  89. package/.sentrux/rules.toml +1 -1
  90. package/AGENTS.md +1 -1
  91. package/CHANGELOG.md +20 -0
  92. package/THIRD_PARTY_NOTICES.md +22 -0
  93. package/package.json +12 -9
  94. package/.agents/skills/firecrawl/SKILL.md +0 -150
  95. package/.agents/skills/firecrawl/rules/install.md +0 -82
  96. package/.agents/skills/firecrawl/rules/security.md +0 -26
  97. package/.agents/skills/firecrawl-agent/SKILL.md +0 -57
  98. package/.agents/skills/firecrawl-build-interact/SKILL.md +0 -67
  99. package/.agents/skills/firecrawl-build-onboarding/SKILL.md +0 -102
  100. package/.agents/skills/firecrawl-build-onboarding/references/auth-flow.md +0 -39
  101. package/.agents/skills/firecrawl-build-onboarding/references/project-setup.md +0 -20
  102. package/.agents/skills/firecrawl-build-onboarding/references/sdk-installation.md +0 -17
  103. package/.agents/skills/firecrawl-build-scrape/SKILL.md +0 -68
  104. package/.agents/skills/firecrawl-build-search/SKILL.md +0 -68
  105. package/.agents/skills/firecrawl-crawl/SKILL.md +0 -58
  106. package/.agents/skills/firecrawl-download/SKILL.md +0 -69
  107. package/.agents/skills/firecrawl-interact/SKILL.md +0 -83
  108. package/.agents/skills/firecrawl-map/SKILL.md +0 -50
  109. package/.agents/skills/firecrawl-parse/SKILL.md +0 -61
  110. package/.agents/skills/firecrawl-scrape/SKILL.md +0 -68
  111. package/.agents/skills/firecrawl-search/SKILL.md +0 -59
  112. package/firecrawl/.env.template +0 -62
  113. package/firecrawl/README.md +0 -49
  114. package/firecrawl/docker-compose.yaml +0 -201
  115. package/firecrawl/searxng/searxng.env +0 -3
  116. package/firecrawl/searxng/settings.yml +0 -85
@@ -1,49 +0,0 @@
1
- # Firecrawl Self-Hosted
2
-
3
- Web scraping infrastructure for the pi harness. Runs entirely in Docker — no local source checkout needed.
4
-
5
- ## Quick Start
6
-
7
- ```bash
8
- # 1. Create your env file
9
- cp .env.template .env
10
- # Edit .env if needed (defaults work for local dev)
11
-
12
- # 2. Pull pre-built images and start
13
- docker compose -f firecrawl/docker-compose.yaml up -d
14
-
15
- # 3. Verify
16
- curl http://localhost:3002/v1/health
17
- ```
18
-
19
- ## Services
20
-
21
- | Service | Port | Description |
22
- |---------|------|-------------|
23
- | `api` | 3002 | Firecrawl API + Bull queue UI at `/admin/<BULL_AUTH_KEY>/queues` |
24
- | `playwright-service` | 3000 (internal) | Headless browser rendering |
25
- | `redis` | 6379 (internal) | Job queue backing store |
26
- | `rabbitmq` | 5672 (internal) | Message broker for workers |
27
- | `nuq-postgres` | 5432 (internal) | Crawl state persistence |
28
- | `searxng` | 8080 | Metasearch engine for `/search` API |
29
- | `searxng-valkey` | 6379 (internal) | SearXNG cache |
30
-
31
- ## Configuration
32
-
33
- All config lives in `.env`. See `.env.template` for all available options.
34
-
35
- ### Enabling AI features
36
-
37
- Uncomment and set `OPENAI_API_KEY` in `.env`. Also supports Ollama and any OpenAI-compatible endpoint.
38
-
39
- ### Using local builds instead of pre-built images
40
-
41
- Flip the `image:` ↔ `build:` lines in `docker-compose.yaml` for `api`, `playwright-service`, and `nuq-postgres`. You'll need the Firecrawl repo checked out alongside this one at `../firecrawl-selfhosted/apps/`.
42
-
43
- ## SDK Usage
44
-
45
- When using Firecrawl SDKs with a self-hosted instance, pass the base URL — no API key required:
46
-
47
- ```js
48
- const client = new Firecrawl({ apiKey: "", baseUrl: "http://localhost:3002" });
49
- ```
@@ -1,201 +0,0 @@
1
- name: firecrawl
2
-
3
- # Firecrawl self-hosted — pre-built image variant.
4
- # Uses GHCR images so no local source checkout is needed.
5
- # To build locally instead, flip build: ↔ image: lines in each service.
6
-
7
- x-common-service: &common-service
8
- image: ghcr.io/firecrawl/firecrawl
9
- restart: unless-stopped
10
- ulimits:
11
- nofile:
12
- soft: 65535
13
- hard: 65535
14
- networks:
15
- - backend
16
- extra_hosts:
17
- - "host.docker.internal:host-gateway"
18
- logging:
19
- driver: "json-file"
20
- options:
21
- max-size: "10m"
22
- max-file: "3"
23
- compress: "true"
24
-
25
- x-common-env: &common-env
26
- REDIS_URL: ${REDIS_URL:-redis://redis:6379}
27
- REDIS_RATE_LIMIT_URL: ${REDIS_URL:-redis://redis:6379}
28
- PLAYWRIGHT_MICROSERVICE_URL: ${PLAYWRIGHT_MICROSERVICE_URL:-http://playwright-service:3000/scrape}
29
- POSTGRES_USER: ${POSTGRES_USER:-postgres}
30
- POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:-postgres}"
31
- POSTGRES_DB: ${POSTGRES_DB:-postgres}
32
- POSTGRES_HOST: ${POSTGRES_HOST:-nuq-postgres}
33
- POSTGRES_PORT: ${POSTGRES_PORT:-5432}
34
- USE_DB_AUTHENTICATION: ${USE_DB_AUTHENTICATION:-false}
35
- NUM_WORKERS_PER_QUEUE: ${NUM_WORKERS_PER_QUEUE:-8}
36
- CRAWL_CONCURRENT_REQUESTS: ${CRAWL_CONCURRENT_REQUESTS:-10}
37
- MAX_CONCURRENT_JOBS: ${MAX_CONCURRENT_JOBS:-5}
38
- BROWSER_POOL_SIZE: ${BROWSER_POOL_SIZE:-5}
39
- OPENAI_API_KEY: ${OPENAI_API_KEY}
40
- OPENAI_BASE_URL: ${OPENAI_BASE_URL}
41
- MODEL_NAME: ${MODEL_NAME}
42
- MODEL_EMBEDDING_NAME: ${MODEL_EMBEDDING_NAME}
43
- OLLAMA_BASE_URL: ${OLLAMA_BASE_URL}
44
- AUTUMN_SECRET_KEY: ${AUTUMN_SECRET_KEY}
45
- SLACK_WEBHOOK_URL: ${SLACK_WEBHOOK_URL}
46
- BULL_AUTH_KEY: ${BULL_AUTH_KEY}
47
- TEST_API_KEY: ${TEST_API_KEY}
48
- SUPABASE_ANON_TOKEN: ${SUPABASE_ANON_TOKEN}
49
- SUPABASE_URL: ${SUPABASE_URL}
50
- SUPABASE_SERVICE_TOKEN: ${SUPABASE_SERVICE_TOKEN}
51
- SELF_HOSTED_WEBHOOK_URL: ${SELF_HOSTED_WEBHOOK_URL}
52
- LOGGING_LEVEL: ${LOGGING_LEVEL}
53
- PROXY_SERVER: ${PROXY_SERVER}
54
- PROXY_USERNAME: ${PROXY_USERNAME}
55
- PROXY_PASSWORD: ${PROXY_PASSWORD}
56
- SEARXNG_ENDPOINT: ${SEARXNG_ENDPOINT}
57
- SEARXNG_ENGINES: ${SEARXNG_ENGINES}
58
- SEARXNG_CATEGORIES: ${SEARXNG_CATEGORIES}
59
-
60
- services:
61
- playwright-service:
62
- image: ghcr.io/firecrawl/playwright-service:latest
63
- restart: unless-stopped
64
- environment:
65
- PORT: 3000
66
- PROXY_SERVER: ${PROXY_SERVER}
67
- PROXY_USERNAME: ${PROXY_USERNAME}
68
- PROXY_PASSWORD: ${PROXY_PASSWORD}
69
- ALLOW_LOCAL_WEBHOOKS: ${ALLOW_LOCAL_WEBHOOKS}
70
- BLOCK_MEDIA: ${BLOCK_MEDIA}
71
- MAX_CONCURRENT_PAGES: ${CRAWL_CONCURRENT_REQUESTS:-10}
72
- networks:
73
- - backend
74
- cpus: 2.0
75
- mem_limit: 4G
76
- memswap_limit: 4G
77
- logging:
78
- driver: "json-file"
79
- options:
80
- max-size: "10m"
81
- max-file: "3"
82
- compress: "true"
83
- tmpfs:
84
- - /tmp/.cache:noexec,nosuid,size=1g
85
-
86
- api:
87
- <<: *common-service
88
- environment:
89
- <<: *common-env
90
- HOST: "0.0.0.0"
91
- PORT: ${INTERNAL_PORT:-3002}
92
- EXTRACT_WORKER_PORT: ${EXTRACT_WORKER_PORT:-3004}
93
- WORKER_PORT: ${WORKER_PORT:-3005}
94
- NUQ_RABBITMQ_URL: amqp://rabbitmq:5672
95
- HARNESS_STARTUP_TIMEOUT_MS: ${HARNESS_STARTUP_TIMEOUT_MS:-60000}
96
- ENV: local
97
- command: node dist/src/harness.js --start-docker
98
- depends_on:
99
- redis:
100
- condition: service_started
101
- playwright-service:
102
- condition: service_started
103
- rabbitmq:
104
- condition: service_healthy
105
- ports:
106
- - "${PORT:-3002}:${INTERNAL_PORT:-3002}"
107
- cpus: 4.0
108
- mem_limit: 8G
109
- memswap_limit: 8G
110
-
111
- redis:
112
- image: redis:alpine
113
- restart: unless-stopped
114
- networks:
115
- - backend
116
- command: redis-server --bind 0.0.0.0
117
- logging:
118
- driver: "json-file"
119
- options:
120
- max-size: "5m"
121
- max-file: "2"
122
- compress: "true"
123
-
124
- rabbitmq:
125
- image: rabbitmq:3-management
126
- restart: unless-stopped
127
- networks:
128
- - backend
129
- command: rabbitmq-server
130
- healthcheck:
131
- test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"]
132
- interval: 5s
133
- timeout: 5s
134
- retries: 3
135
- start_period: 5s
136
- logging:
137
- driver: "json-file"
138
- options:
139
- max-size: "5m"
140
- max-file: "2"
141
- compress: "true"
142
-
143
- nuq-postgres:
144
- image: ghcr.io/firecrawl/nuq-postgres:latest
145
- restart: unless-stopped
146
- environment:
147
- POSTGRES_USER: ${POSTGRES_USER:-postgres}
148
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
149
- POSTGRES_DB: ${POSTGRES_DB:-postgres}
150
- networks:
151
- - backend
152
- logging:
153
- driver: "json-file"
154
- options:
155
- max-size: "10m"
156
- max-file: "3"
157
- compress: "true"
158
-
159
- # SearXNG metasearch engine — used by Firecrawl /search API when SEARXNG_ENDPOINT is set
160
- searxng-valkey:
161
- image: docker.io/valkey/valkey:9-alpine
162
- command: valkey-server --save 30 1 --loglevel warning
163
- restart: unless-stopped
164
- networks:
165
- - backend
166
- volumes:
167
- - searxng-valkey-data:/data
168
- logging:
169
- driver: "json-file"
170
- options:
171
- max-size: "5m"
172
- max-file: "2"
173
- compress: "true"
174
-
175
- searxng:
176
- image: docker.io/searxng/searxng:latest
177
- restart: unless-stopped
178
- ports:
179
- - "${SEARXNG_EXTERNAL_PORT:-8080}:8080"
180
- networks:
181
- - backend
182
- env_file: ./searxng/searxng.env
183
- volumes:
184
- - ./searxng/settings.yml:/etc/searxng/settings.yml
185
- - searxng-data:/var/cache/searxng
186
- depends_on:
187
- - searxng-valkey
188
- logging:
189
- driver: "json-file"
190
- options:
191
- max-size: "10m"
192
- max-file: "3"
193
- compress: "true"
194
-
195
- volumes:
196
- searxng-valkey-data:
197
- searxng-data:
198
-
199
- networks:
200
- backend:
201
- driver: bridge
@@ -1,3 +0,0 @@
1
- SEARXNG_PORT=8080
2
- SEARXNG_BIND_ADDRESS=0.0.0.0
3
- SEARXNG_SECRET=fcaacc9a734a7f85634f48aa23bfde183ef646fd0c51054f95de6fd73226b04e
@@ -1,85 +0,0 @@
1
- # SearXNG settings for Firecrawl self-hosted integration
2
- # Docs: https://docs.searxng.org/admin/settings/settings.html
3
-
4
- general:
5
- debug: false
6
- instance_name: "Firecrawl Search"
7
- enable_metrics: false
8
-
9
- brand:
10
- docs_url: https://docs.searxng.org/
11
- public_instances: https://searx.space
12
- wiki_url: https://github.com/searxng/searxng/wiki
13
- issue_url: https://github.com/searxng/searxng/issues
14
-
15
- search:
16
- safe_search: 0
17
- autocomplete: ""
18
- formats:
19
- - html
20
- - json
21
- ban_time_on_fail: 5
22
- max_ban_time_on_fail: 120
23
-
24
- server:
25
- port: 8080
26
- bind_address: "0.0.0.0"
27
- base_url: false
28
- limiter: false
29
- secret_key: "fcaacc9a734a7f85634f48aa23bfde183ef646fd0c51054f95de6fd73226b04e"
30
- image_proxy: false
31
- method: "GET"
32
-
33
- valkey:
34
- url: valkey://searxng-valkey:6379/0
35
-
36
- ui:
37
- default_theme: simple
38
- default_locale: ""
39
-
40
- outgoing:
41
- request_timeout: 10.0
42
- pool_connections: 100
43
- pool_maxsize: 20
44
- enable_http2: true
45
-
46
- plugins:
47
- searx.plugins.calculator.SXNGPlugin:
48
- active: true
49
- searx.plugins.hash_plugin.SXNGPlugin:
50
- active: true
51
- searx.plugins.self_info.SXNGPlugin:
52
- active: true
53
- searx.plugins.unit_converter.SXNGPlugin:
54
- active: true
55
- searx.plugins.tracker_url_remover.SXNGPlugin:
56
- active: true
57
-
58
- categories_as_tabs:
59
- general:
60
- images:
61
- videos:
62
- news:
63
-
64
- engines:
65
- - name: duckduckgo
66
- engine: duckduckgo
67
- shortcut: ddg
68
- - name: google
69
- engine: google
70
- shortcut: go
71
- - name: brave
72
- engine: brave
73
- shortcut: br
74
- - name: startpage
75
- engine: startpage
76
- shortcut: sp
77
- - name: wikipedia
78
- engine: wikipedia
79
- shortcut: wp
80
-
81
- doi_resolvers:
82
- oadoi.org: "https://oadoi.org/"
83
- doi.org: "https://doi.org/"
84
-
85
- default_doi_resolver: "oadoi.org"