@topy-ai/maggie 0.7.54 → 0.7.56
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/README-zh-TW.md +25 -23
- package/README.md +93 -71
- package/bin/maggie.js +14 -2
- package/bundled-contracts/maggie-assistant-tools/booking-receptionist-example-v1.json +18 -2
- package/bundled-contracts/maggie-assistant-tools/report-v1.schema.json +43 -0
- package/bundled-contracts/maggie-assistant-tools/tool-registry-example-v1.json +249 -11
- package/bundled-contracts/maggie-assistant-tools/tool-registry-v1.schema.json +175 -0
- package/bundled-contracts/maggie-deployment/readiness-v1.schema.json +2 -1
- package/bundled-contracts/maggie-ops/agent-routines-v1.schema.json +48 -0
- package/bundled-contracts/maggie-security/finding-example-v1.json +89 -0
- package/bundled-contracts/maggie-security/finding-v1.schema.json +63 -0
- package/bundled-contracts/maggie-security/findings-set-example-v1.json +148 -0
- package/bundled-contracts/maggie-security/findings-set-v1.schema.json +32 -0
- package/bundled-contracts/maggie-security/protect-plan-v1.schema.json +28 -0
- package/bundled-contracts/maggie-security/report-v1.schema.json +29 -0
- package/bundled-contracts/maggie-security/stack-example-v1.json +66 -0
- package/bundled-contracts/maggie-security/stack-upload-v1.schema.json +22 -0
- package/bundled-contracts/maggie-security/stack-v1.schema.json +37 -0
- package/bundled-contracts/maggie-security/tools-lock-v1.schema.json +36 -0
- package/bundled-skills/catalog.json +5 -1
- package/bundled-skills/maggie-assistant-tools/SKILL.md +34 -1
- package/bundled-skills/maggie-assistant-tools/references/report-inbox.md +45 -0
- package/bundled-skills/maggie-assistant-tools/references/unattended-agents.md +70 -0
- package/bundled-skills/maggie-blog/SKILL.md +9 -2
- package/bundled-skills/maggie-booking/SKILL.md +1 -1
- package/bundled-skills/maggie-dash/SKILL.md +9 -0
- package/bundled-skills/maggie-deployment/SKILL.md +77 -1
- package/bundled-skills/maggie-deployment/references/vps.md +5 -0
- package/bundled-skills/maggie-marketplace/SKILL.md +21 -1
- package/bundled-skills/maggie-ops/SKILL.md +28 -0
- package/bundled-skills/maggie-ops/references/agents-repository.md +108 -0
- package/bundled-skills/maggie-ops/references/ops-autopilot.md +65 -0
- package/bundled-skills/maggie-ops/references/routine-mode.md +92 -0
- package/bundled-skills/maggie-security/SKILL.md +172 -0
- package/bundled-skills/maggie-security/agents/openai.yaml +4 -0
- package/bundled-skills/maggie-security/data/LICENSE-NOTICE.md +24 -0
- package/bundled-skills/maggie-security/data/asvs-map.json +209 -0
- package/bundled-skills/maggie-security/data/fail2ban/filter.d/maggie-wordpress.conf +6 -0
- package/bundled-skills/maggie-security/data/semgrep/LICENSE-NOTICE.md +5 -0
- package/bundled-skills/maggie-security/data/semgrep/VERSION +1 -0
- package/bundled-skills/maggie-security/data/semgrep/rules/dockerfile.yaml +14 -0
- package/bundled-skills/maggie-security/data/semgrep/rules/generic.yaml +26 -0
- package/bundled-skills/maggie-security/data/semgrep/rules/js.yaml +216 -0
- package/bundled-skills/maggie-security/data/semgrep/rules/php-debug-ok.yaml +17 -0
- package/bundled-skills/maggie-security/data/semgrep/rules/php-debug.yaml +17 -0
- package/bundled-skills/maggie-security/data/semgrep/rules/php.yaml +101 -0
- package/bundled-skills/maggie-security/data/semgrep/tests/dockerfile.dockerfile +10 -0
- package/bundled-skills/maggie-security/data/semgrep/tests/generic.astro +11 -0
- package/bundled-skills/maggie-security/data/semgrep/tests/generic.conf +11 -0
- package/bundled-skills/maggie-security/data/semgrep/tests/js.jsx +95 -0
- package/bundled-skills/maggie-security/data/semgrep/tests/php-debug-ok.php +5 -0
- package/bundled-skills/maggie-security/data/semgrep/tests/php-debug.php +3 -0
- package/bundled-skills/maggie-security/data/semgrep/tests/php.php +55 -0
- package/bundled-skills/maggie-security/evals/evals.json +97 -0
- package/bundled-skills/maggie-security/references/commands.md +111 -0
- package/bundled-skills/maggie-security/references/cve-response.md +24 -0
- package/bundled-skills/maggie-security/references/explaining-findings.md +57 -0
- package/bundled-skills/maggie-security/references/findings.md +39 -0
- package/bundled-skills/maggie-security/references/ownership-and-consent.md +29 -0
- package/bundled-skills/maggie-security/references/site-types.md +22 -0
- package/bundled-skills/maggie-security/references/tools-and-licences.md +16 -0
- package/bundled-skills/maggie-security/references/workflows.md +23 -0
- package/bundled-skills/maggie-security/registry/security-tools.registry.json +628 -0
- package/bundled-skills/maggie-security/routines.example.json +27 -0
- package/bundled-skills/maggie-seo-geo/SKILL.md +9 -1
- package/bundled-skills/maggie-social-share/SKILL.md +20 -0
- package/bundled-tools/clis/maggie.py +63 -3
- package/bundled-tools/clis/maggie_assistant_tools.py +225 -1
- package/bundled-tools/clis/maggie_deployment_readiness.py +17 -2
- package/bundled-tools/clis/maggie_host_runtime.py +458 -0
- package/bundled-tools/clis/maggie_live_urls.py +11 -2
- package/bundled-tools/clis/maggie_ops.py +2 -0
- package/bundled-tools/clis/maggie_ops_routines.py +352 -0
- package/bundled-tools/clis/maggie_query_ideas.py +154 -0
- package/bundled-tools/clis/maggie_security.py +342 -0
- package/bundled-tools/clis/maggie_security_agent.py +326 -0
- package/bundled-tools/clis/maggie_security_code.py +650 -0
- package/bundled-tools/clis/maggie_security_core.py +1512 -0
- package/bundled-tools/clis/maggie_security_deps.py +560 -0
- package/bundled-tools/clis/maggie_security_health.py +415 -0
- package/bundled-tools/clis/maggie_security_host.py +511 -0
- package/bundled-tools/clis/maggie_security_hosted.py +115 -0
- package/bundled-tools/clis/maggie_security_intel.py +1294 -0
- package/bundled-tools/clis/maggie_security_inventory.py +1023 -0
- package/bundled-tools/clis/maggie_security_logs.py +777 -0
- package/bundled-tools/clis/maggie_security_mcp.py +473 -0
- package/bundled-tools/clis/maggie_security_mirror.py +122 -0
- package/bundled-tools/clis/maggie_security_protect.py +519 -0
- package/bundled-tools/clis/maggie_security_report.py +506 -0
- package/bundled-tools/clis/maggie_security_standards.py +214 -0
- package/bundled-tools/clis/maggie_security_versions.py +381 -0
- package/bundled-tools/clis/maggie_security_web.py +936 -0
- package/bundled-tools/clis/maggie_skill_catalog.py +16 -2
- package/bundled-tools/clis/maggie_social_share.py +101 -1
- package/bundled-tools/clis/maggie_version_sources.py +93 -0
- package/bundled-tools/clis/security_data/eol-snapshot.json +1 -0
- package/bundled-tools/clis/security_data/gitleaks-rules.json +3812 -0
- package/bundled-tools/clis/security_data/maltrail-lists.json +1 -0
- package/bundled-tools/clis/security_data/public-suffix-icann.txt +7374 -0
- package/bundled-tools/clis/security_data/retire-extractors.json +695 -0
- package/bundled-tools/clis/security_data/sigma-web.json +6514 -0
- package/bundled-tools/clis/security_data/tools.lock.json +358 -0
- package/bundled-tools/integrations/maggie-api-pull.md +28 -1
- package/package.json +1 -1
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "maggie-security-tools-lock.v1",
|
|
3
|
+
"updated": "2026-10-24",
|
|
4
|
+
"tools": {
|
|
5
|
+
"osv-scanner": {
|
|
6
|
+
"version": "2.6.0",
|
|
7
|
+
"licence": "Apache-2.0",
|
|
8
|
+
"class": "bundle-ok",
|
|
9
|
+
"homepage": "https://github.com/google/osv-scanner",
|
|
10
|
+
"version_args": [
|
|
11
|
+
"--version"
|
|
12
|
+
],
|
|
13
|
+
"assets": {
|
|
14
|
+
"linux-amd64": {
|
|
15
|
+
"url": "https://github.com/google/osv-scanner/releases/download/v2.6.0/osv-scanner_linux_amd64",
|
|
16
|
+
"sha256": "ca69b3d3cd08f889a49dc0a383122f71cc528b83803671df5fd874d97485b108",
|
|
17
|
+
"archive": "none"
|
|
18
|
+
},
|
|
19
|
+
"linux-arm64": {
|
|
20
|
+
"url": "https://github.com/google/osv-scanner/releases/download/v2.6.0/osv-scanner_linux_arm64",
|
|
21
|
+
"sha256": "2c71403eb443d05891c4f268c3ad771cf4f16e5443463fd7851ef8f454d3c7e4",
|
|
22
|
+
"archive": "none"
|
|
23
|
+
},
|
|
24
|
+
"darwin-arm64": {
|
|
25
|
+
"url": "https://github.com/google/osv-scanner/releases/download/v2.6.0/osv-scanner_darwin_arm64",
|
|
26
|
+
"sha256": "98c460dcd37de25819babd757d04542045b6243113e209edcd4d89fedb0256b4",
|
|
27
|
+
"archive": "none"
|
|
28
|
+
},
|
|
29
|
+
"darwin-amd64": {
|
|
30
|
+
"url": "https://github.com/google/osv-scanner/releases/download/v2.6.0/osv-scanner_darwin_amd64",
|
|
31
|
+
"sha256": "60c5296637e977b28eeda5c7f13573e447659a632922737f94d11fa7e30ad6ca",
|
|
32
|
+
"archive": "none"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"required_flags": [],
|
|
36
|
+
"forbidden_flags": [
|
|
37
|
+
"fix",
|
|
38
|
+
"--experimental-call-analysis"
|
|
39
|
+
],
|
|
40
|
+
"notes": "sha256 from upstream osv-scanner_SHA256SUMS (v2.6.0, published 2026-09-14; v2.7.0 skipped by the 14-day cooldown)."
|
|
41
|
+
},
|
|
42
|
+
"gitleaks": {
|
|
43
|
+
"version": "8.30.1",
|
|
44
|
+
"licence": "MIT",
|
|
45
|
+
"class": "bundle-ok",
|
|
46
|
+
"homepage": "https://github.com/gitleaks/gitleaks",
|
|
47
|
+
"version_args": [
|
|
48
|
+
"version"
|
|
49
|
+
],
|
|
50
|
+
"assets": {
|
|
51
|
+
"linux-amd64": {
|
|
52
|
+
"url": "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz",
|
|
53
|
+
"sha256": "551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb",
|
|
54
|
+
"archive": "tar.gz",
|
|
55
|
+
"member": "gitleaks"
|
|
56
|
+
},
|
|
57
|
+
"linux-arm64": {
|
|
58
|
+
"url": "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_arm64.tar.gz",
|
|
59
|
+
"sha256": "e4a487ee7ccd7d3a7f7ec08657610aa3606637dab924210b3aee62570fb4b080",
|
|
60
|
+
"archive": "tar.gz",
|
|
61
|
+
"member": "gitleaks"
|
|
62
|
+
},
|
|
63
|
+
"darwin-arm64": {
|
|
64
|
+
"url": "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_darwin_arm64.tar.gz",
|
|
65
|
+
"sha256": "b40ab0ae55c505963e365f271a8d3846efbc170aa17f2607f13df610a9aeb6a5",
|
|
66
|
+
"archive": "tar.gz",
|
|
67
|
+
"member": "gitleaks"
|
|
68
|
+
},
|
|
69
|
+
"darwin-amd64": {
|
|
70
|
+
"url": "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_darwin_x64.tar.gz",
|
|
71
|
+
"sha256": "dfe101a4db2255fc85120ac7f3d25e4342c3c20cf749f2c20a18081af1952709",
|
|
72
|
+
"archive": "tar.gz",
|
|
73
|
+
"member": "gitleaks"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"required_flags": [
|
|
77
|
+
"--no-banner",
|
|
78
|
+
"--redact"
|
|
79
|
+
],
|
|
80
|
+
"forbidden_flags": [],
|
|
81
|
+
"notes": "sha256 from upstream gitleaks_8.30.1_checksums.txt. --redact keeps values out of its report."
|
|
82
|
+
},
|
|
83
|
+
"retire": {
|
|
84
|
+
"version": "5.3.0",
|
|
85
|
+
"licence": "Apache-2.0",
|
|
86
|
+
"class": "bundle-ok",
|
|
87
|
+
"homepage": "https://github.com/RetireJS/retire.js",
|
|
88
|
+
"binary": "retire",
|
|
89
|
+
"version_args": [
|
|
90
|
+
"--version"
|
|
91
|
+
],
|
|
92
|
+
"required_flags": [],
|
|
93
|
+
"forbidden_flags": [],
|
|
94
|
+
"notes": "npm package; run with: npx --yes retire@5.3.0. No standalone binary."
|
|
95
|
+
},
|
|
96
|
+
"nuclei": {
|
|
97
|
+
"version": "3.4.10",
|
|
98
|
+
"licence": "MIT",
|
|
99
|
+
"class": "bundle-ok",
|
|
100
|
+
"homepage": "https://github.com/projectdiscovery/nuclei",
|
|
101
|
+
"version_args": [
|
|
102
|
+
"-version"
|
|
103
|
+
],
|
|
104
|
+
"assets": {
|
|
105
|
+
"linux-amd64": {
|
|
106
|
+
"url": "https://github.com/projectdiscovery/nuclei/releases/download/v3.4.10/nuclei_3.4.10_linux_amd64.zip",
|
|
107
|
+
"sha256": "UNPINNED",
|
|
108
|
+
"archive": "zip",
|
|
109
|
+
"member": "nuclei"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"required_flags": [
|
|
113
|
+
"-ni",
|
|
114
|
+
"-duc",
|
|
115
|
+
"-omit-raw",
|
|
116
|
+
"-silent"
|
|
117
|
+
],
|
|
118
|
+
"forbidden_flags": [
|
|
119
|
+
"-ai",
|
|
120
|
+
"-llm",
|
|
121
|
+
"-dashboard",
|
|
122
|
+
"-pd",
|
|
123
|
+
"-pdu",
|
|
124
|
+
"-auth",
|
|
125
|
+
"-team-id",
|
|
126
|
+
"-interactsh-server",
|
|
127
|
+
"-iserver",
|
|
128
|
+
"-cloud-upload"
|
|
129
|
+
],
|
|
130
|
+
"notes": "-ni disables OAST (interactsh) traffic to third parties; -duc disables update checks."
|
|
131
|
+
},
|
|
132
|
+
"httpx": {
|
|
133
|
+
"version": "1.7.1",
|
|
134
|
+
"licence": "MIT",
|
|
135
|
+
"class": "bundle-ok",
|
|
136
|
+
"homepage": "https://github.com/projectdiscovery/httpx",
|
|
137
|
+
"assets": {
|
|
138
|
+
"linux-amd64": {
|
|
139
|
+
"url": "https://github.com/projectdiscovery/httpx/releases/download/v1.7.1/httpx_1.7.1_linux_amd64.zip",
|
|
140
|
+
"sha256": "UNPINNED",
|
|
141
|
+
"archive": "zip",
|
|
142
|
+
"member": "httpx"
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"required_flags": [
|
|
146
|
+
"-duc",
|
|
147
|
+
"-silent"
|
|
148
|
+
],
|
|
149
|
+
"forbidden_flags": [
|
|
150
|
+
"-pd",
|
|
151
|
+
"-dashboard",
|
|
152
|
+
"-auth"
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
"semgrep": {
|
|
156
|
+
"version": "1.180.0",
|
|
157
|
+
"licence": "LGPL-2.1",
|
|
158
|
+
"class": "external-only",
|
|
159
|
+
"homepage": "https://github.com/semgrep/semgrep",
|
|
160
|
+
"version_args": [
|
|
161
|
+
"--version"
|
|
162
|
+
],
|
|
163
|
+
"required_flags": [
|
|
164
|
+
"--metrics=off",
|
|
165
|
+
"--disable-version-check"
|
|
166
|
+
],
|
|
167
|
+
"forbidden_flags": [
|
|
168
|
+
"--config=auto",
|
|
169
|
+
"--config=p/",
|
|
170
|
+
"--config=r/",
|
|
171
|
+
"login",
|
|
172
|
+
"ci",
|
|
173
|
+
"publish",
|
|
174
|
+
"--pro"
|
|
175
|
+
],
|
|
176
|
+
"env": {
|
|
177
|
+
"SEMGREP_SEND_METRICS": "off"
|
|
178
|
+
},
|
|
179
|
+
"notes": "LGPL-2.1: installed by the person (pipx install semgrep==1.180.0); Maggie calls it as a separate process with --metrics=off and only the packaged Maggie rule pack or local rule folders.",
|
|
180
|
+
"flags_after_subcommand": true
|
|
181
|
+
},
|
|
182
|
+
"testssl.sh": {
|
|
183
|
+
"version": "3.2.1",
|
|
184
|
+
"licence": "GPL-2.0",
|
|
185
|
+
"class": "external-only",
|
|
186
|
+
"homepage": "https://github.com/testssl/testssl.sh",
|
|
187
|
+
"binary": "testssl.sh",
|
|
188
|
+
"required_flags": [
|
|
189
|
+
"--quiet"
|
|
190
|
+
],
|
|
191
|
+
"forbidden_flags": [
|
|
192
|
+
"--phone-out"
|
|
193
|
+
],
|
|
194
|
+
"notes": "GPL: download from upstream yourself; Maggie calls it as a separate process."
|
|
195
|
+
},
|
|
196
|
+
"lynis": {
|
|
197
|
+
"version": "3.1.5",
|
|
198
|
+
"licence": "GPL-3.0",
|
|
199
|
+
"class": "external-only",
|
|
200
|
+
"homepage": "https://github.com/CISOfy/lynis",
|
|
201
|
+
"required_flags": [],
|
|
202
|
+
"forbidden_flags": [
|
|
203
|
+
"--upload"
|
|
204
|
+
],
|
|
205
|
+
"notes": "GPL: run from the upstream tarball on the host; never vendored."
|
|
206
|
+
},
|
|
207
|
+
"goaccess": {
|
|
208
|
+
"version": "1.9.4",
|
|
209
|
+
"licence": "MIT",
|
|
210
|
+
"class": "external-only",
|
|
211
|
+
"homepage": "https://github.com/allinurl/goaccess",
|
|
212
|
+
"required_flags": [],
|
|
213
|
+
"forbidden_flags": [
|
|
214
|
+
"--real-time-html",
|
|
215
|
+
"--daemonize"
|
|
216
|
+
],
|
|
217
|
+
"notes": "Install with the OS package manager (apt install goaccess)."
|
|
218
|
+
},
|
|
219
|
+
"lnav": {
|
|
220
|
+
"version": "0.13.2",
|
|
221
|
+
"licence": "BSD-2-Clause",
|
|
222
|
+
"class": "external-only",
|
|
223
|
+
"homepage": "https://github.com/tstack/lnav",
|
|
224
|
+
"required_flags": [
|
|
225
|
+
"-n"
|
|
226
|
+
],
|
|
227
|
+
"forbidden_flags": []
|
|
228
|
+
},
|
|
229
|
+
"syft": {
|
|
230
|
+
"version": "1.33.0",
|
|
231
|
+
"licence": "Apache-2.0",
|
|
232
|
+
"class": "bundle-ok",
|
|
233
|
+
"homepage": "https://github.com/anchore/syft",
|
|
234
|
+
"assets": {
|
|
235
|
+
"linux-amd64": {
|
|
236
|
+
"url": "https://github.com/anchore/syft/releases/download/v1.33.0/syft_1.33.0_linux_amd64.tar.gz",
|
|
237
|
+
"sha256": "UNPINNED",
|
|
238
|
+
"archive": "tar.gz",
|
|
239
|
+
"member": "syft"
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
"required_flags": [],
|
|
243
|
+
"forbidden_flags": [],
|
|
244
|
+
"env": {
|
|
245
|
+
"SYFT_CHECK_FOR_APP_UPDATE": "false"
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
"grype": {
|
|
249
|
+
"version": "0.100.0",
|
|
250
|
+
"licence": "Apache-2.0",
|
|
251
|
+
"class": "bundle-ok",
|
|
252
|
+
"homepage": "https://github.com/anchore/grype",
|
|
253
|
+
"assets": {
|
|
254
|
+
"linux-amd64": {
|
|
255
|
+
"url": "https://github.com/anchore/grype/releases/download/v0.100.0/grype_0.100.0_linux_amd64.tar.gz",
|
|
256
|
+
"sha256": "UNPINNED",
|
|
257
|
+
"archive": "tar.gz",
|
|
258
|
+
"member": "grype"
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
"required_flags": [],
|
|
262
|
+
"forbidden_flags": [],
|
|
263
|
+
"env": {
|
|
264
|
+
"GRYPE_CHECK_FOR_APP_UPDATE": "false"
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"trivy": {
|
|
268
|
+
"version": "0.67.2",
|
|
269
|
+
"licence": "Apache-2.0",
|
|
270
|
+
"class": "bundle-ok",
|
|
271
|
+
"homepage": "https://github.com/aquasecurity/trivy",
|
|
272
|
+
"assets": {
|
|
273
|
+
"linux-amd64": {
|
|
274
|
+
"url": "https://github.com/aquasecurity/trivy/releases/download/v0.67.2/trivy_0.67.2_Linux-64bit.tar.gz",
|
|
275
|
+
"sha256": "UNPINNED",
|
|
276
|
+
"archive": "tar.gz",
|
|
277
|
+
"member": "trivy"
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"required_flags": [
|
|
281
|
+
"--quiet"
|
|
282
|
+
],
|
|
283
|
+
"forbidden_flags": [
|
|
284
|
+
"--server"
|
|
285
|
+
]
|
|
286
|
+
},
|
|
287
|
+
"dockle": {
|
|
288
|
+
"version": "0.4.15",
|
|
289
|
+
"licence": "Apache-2.0",
|
|
290
|
+
"class": "bundle-ok",
|
|
291
|
+
"homepage": "https://github.com/goodwithtech/dockle",
|
|
292
|
+
"required_flags": [],
|
|
293
|
+
"forbidden_flags": []
|
|
294
|
+
},
|
|
295
|
+
"gatus": {
|
|
296
|
+
"version": "5.26.0",
|
|
297
|
+
"licence": "Apache-2.0",
|
|
298
|
+
"class": "bundle-ok",
|
|
299
|
+
"homepage": "https://github.com/TwiN/gatus",
|
|
300
|
+
"required_flags": [],
|
|
301
|
+
"forbidden_flags": [],
|
|
302
|
+
"notes": "Deployed as a container by uptime-deploy; not run locally."
|
|
303
|
+
},
|
|
304
|
+
"skillspector": {
|
|
305
|
+
"version": "2.12.0",
|
|
306
|
+
"licence": "Apache-2.0",
|
|
307
|
+
"class": "external-only",
|
|
308
|
+
"homepage": "https://github.com/NVIDIA/SkillSpector",
|
|
309
|
+
"required_flags": [
|
|
310
|
+
"--no-llm"
|
|
311
|
+
],
|
|
312
|
+
"forbidden_flags": [
|
|
313
|
+
"--llm",
|
|
314
|
+
"--semantic",
|
|
315
|
+
"--provider"
|
|
316
|
+
],
|
|
317
|
+
"binary": "skillspector",
|
|
318
|
+
"flags_after_subcommand": true,
|
|
319
|
+
"notes": "Apache-2.0, Python 3.12+: install it yourself with `pipx install --python python3.12 skillspector==2.12.0` (or `uv tool install skillspector==2.12.0`). Maggie forces --no-llm."
|
|
320
|
+
},
|
|
321
|
+
"bumblebee": {
|
|
322
|
+
"version": "0.1.0",
|
|
323
|
+
"licence": "MIT",
|
|
324
|
+
"class": "bundle-ok",
|
|
325
|
+
"homepage": "https://github.com/perplexityai/bumblebee",
|
|
326
|
+
"required_flags": [],
|
|
327
|
+
"forbidden_flags": []
|
|
328
|
+
},
|
|
329
|
+
"npq": {
|
|
330
|
+
"version": "3.8.0",
|
|
331
|
+
"licence": "Apache-2.0",
|
|
332
|
+
"class": "bundle-ok",
|
|
333
|
+
"homepage": "https://github.com/lirantal/npq",
|
|
334
|
+
"required_flags": [
|
|
335
|
+
"--dry-run"
|
|
336
|
+
],
|
|
337
|
+
"forbidden_flags": [],
|
|
338
|
+
"notes": "npm package; run with npx --yes npq@3.8.0 --dry-run."
|
|
339
|
+
},
|
|
340
|
+
"trufflehog": {
|
|
341
|
+
"version": "n/a",
|
|
342
|
+
"licence": "AGPL-3.0",
|
|
343
|
+
"class": "reference-only",
|
|
344
|
+
"homepage": "https://github.com/trufflesecurity/trufflehog",
|
|
345
|
+
"notes": "Design reference only; gitleaks is the secrets scanner."
|
|
346
|
+
},
|
|
347
|
+
"maggie-waf-replay": {
|
|
348
|
+
"version": "0.1.0",
|
|
349
|
+
"licence": "MIT (Coraza and OWASP CRS: Apache-2.0)",
|
|
350
|
+
"class": "bundle-ok",
|
|
351
|
+
"binary": "maggie-waf-replay",
|
|
352
|
+
"homepage": "tools/go/waf-replay",
|
|
353
|
+
"required_flags": [],
|
|
354
|
+
"forbidden_flags": [],
|
|
355
|
+
"notes": "Built from tools/go/waf-replay (go build -trimpath). Release CI is to publish per-platform assets with sha256 here; until then build it yourself and put it on PATH."
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
@@ -89,13 +89,40 @@ back to an older stored URL, which after a platform move answers 404. So:
|
|
|
89
89
|
`maggie blog live-urls match --sitemap https://example.com/sitemap.xml --write --report-body .maggie/live-urls-report.json`,
|
|
90
90
|
then send that body with `maggie api report-state --body-file … --execute`.
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
Every post without a live URL is a candidate, including one already tracked
|
|
93
|
+
with an empty value; when the record has no slug, the last path segment of its
|
|
94
|
+
delivered address is used. Matching is **additive**: a post that already has a live URL keeps it, and a
|
|
93
95
|
post this run did not find is left as it was — never marked unmatched — so the
|
|
94
96
|
match can run daily without retiring earlier matches. When translated copies
|
|
95
97
|
share the slug (`/blog/x`, `/zh-hans/blog/x`), the URL **without a locale
|
|
96
98
|
segment** wins. The same two rules apply to the platform's own sitemap
|
|
97
99
|
matching for API Pull destinations.
|
|
98
100
|
|
|
101
|
+
## Rewrites on pull sites
|
|
102
|
+
|
|
103
|
+
A pull site receives rewrites the same way it receives posts: `GET /updates`
|
|
104
|
+
on the same schedule as `/posts` (one rewrite per call, charged like a post;
|
|
105
|
+
the answer is `{delivered, updates: [...]}`). Without this path a rewrite
|
|
106
|
+
requested for a pulled post never reaches the site. Each rewrite is applied to
|
|
107
|
+
the post it is for, never stored as a new post:
|
|
108
|
+
|
|
109
|
+
1. Find the post by `source_content_id` (the id `/posts` delivered it under),
|
|
110
|
+
else by its slug or address, previous slugs included.
|
|
111
|
+
2. Replace only the body. Title, slug, status, topics and the live URL stay as
|
|
112
|
+
the site has them.
|
|
113
|
+
3. Keep the replaced body (and its checksum) so the rewrite can be undone.
|
|
114
|
+
4. A rewrite with `publication_status: "draft"` is held for review, and one
|
|
115
|
+
with no matching post here is kept as `unmatched`; neither is applied.
|
|
116
|
+
5. Translations of a rewritten post are stale: queue them again.
|
|
117
|
+
6. Report the outcome with `POST /content-tracking/report-state`.
|
|
118
|
+
|
|
119
|
+
`maggie api lifecycle --execute --allow-quota --pull-updates` does steps 1, 2,
|
|
120
|
+
4 locally: the rewrite lands on the original record in
|
|
121
|
+
`.maggie/ai-cmo-lifecycle.json` (`rewrite_pending`, a `rewrites` history with
|
|
122
|
+
the previous checksum), held ones are listed without changing the body, and
|
|
123
|
+
unmatched ones go to `rewrites_unmatched`. A later `/posts` re-delivery keeps
|
|
124
|
+
the record's live URL and rewrite history.
|
|
125
|
+
|
|
99
126
|
## Project context synchronization
|
|
100
127
|
|
|
101
128
|
`GET /project-context` returns sanitized, read-only context scoped by the API
|