@agenthippo-ai/agenthippo 1.110.9 → 1.110.19

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 (533) hide show
  1. package/out/agentpack/types.js +2 -5
  2. package/out/analytics/dashboard/artifactManager.js +2 -439
  3. package/out/analytics/dashboard/fleetDisplayUtils.js +2 -162
  4. package/out/analytics/dashboard/fleetOrchestrator.js +3 -142
  5. package/out/analytics/dashboard/fleetRegistry.js +2 -79
  6. package/out/analytics/dashboard/fleetRowDefaults.js +2 -87
  7. package/out/analytics/dashboard/fleetScriptAdapter.js +2 -146
  8. package/out/analytics/dashboard/fleetTypes.js +2 -29
  9. package/out/analytics/dashboard/index.js +2 -17
  10. package/out/analytics/dashboard/indexingService.js +2 -422
  11. package/out/analytics/dashboard/localFleetAdapter.js +2 -222
  12. package/out/analytics/dashboard/performanceMonitor.js +5 -76
  13. package/out/analytics/dashboard/processManager.js +2 -209
  14. package/out/analytics/dashboard/provider.js +38 -3817
  15. package/out/analytics/dashboard/queryRunner.js +62 -750
  16. package/out/analytics/dashboard/scheduledFleetStorage.js +2 -241
  17. package/out/analytics/dashboard/sessionJsonlFleet.js +3 -204
  18. package/out/analytics/dashboard/teamViewDiscovery.js +2 -106
  19. package/out/analytics/dashboard/webview/panel.js +34 -2318
  20. package/out/analytics/dashboard/webview/runtime-bridge.js +2 -82
  21. package/out/analytics/lifecycle.js +2 -43
  22. package/out/analytics/service.js +8 -1277
  23. package/out/auth/authBaseUrl.js +2 -59
  24. package/out/auth/bootstrapApply.js +2 -71
  25. package/out/auth/brokerClient.js +2 -160
  26. package/out/auth/callbackUri.js +2 -59
  27. package/out/auth/githubStoreGate.js +2 -70
  28. package/out/auth/loopbackAuthServer.js +4 -159
  29. package/out/auth/onboardingPrompt.js +2 -112
  30. package/out/auth/pkce.js +2 -9
  31. package/out/auth/provider.js +2 -226
  32. package/out/auth/sessionStore.js +2 -156
  33. package/out/auth/signInFlow.js +2 -183
  34. package/out/cli/index.js +619 -551
  35. package/out/cli/run-custom-engine-runner.js +3 -318
  36. package/out/cli/vscode-shim.js +2 -86
  37. package/out/engines/factory.js +2 -45
  38. package/out/engines/types.js +2 -17
  39. package/out/examples/run-headless-repl.js +6 -286
  40. package/out/examples/run-headless.js +2 -187
  41. package/out/extension.js +32 -4473
  42. package/out/gateway/gatewayRouteIndex.js +6 -371
  43. package/out/gateway/gatewaySessionStore.js +3 -243
  44. package/out/gateway/index.js +2 -31
  45. package/out/gateway/resetMappings.js +2 -52
  46. package/out/gateway/service.js +5 -1249
  47. package/out/mcp/publish.js +2 -143
  48. package/out/remote/handleRemoteChat.js +2 -169
  49. package/out/remote/remotePackStatusBar.js +3 -103
  50. package/out/remote/remoteTrust.js +6 -277
  51. package/out/remote/serveClient.js +4 -277
  52. package/out/remoteSkills.js +3 -191
  53. package/out/runtime/index.js +2 -32
  54. package/out/runtime/vscode/index.js +2 -20
  55. package/out/runtime/vscode/vscode-config-provider.js +2 -77
  56. package/out/runtime/vscode/vscode-edit-tracker.js +2 -122
  57. package/out/runtime/vscode/vscode-logger.js +2 -30
  58. package/out/runtime/vscode/vscode-permission-handler.js +2 -72
  59. package/out/scripts/agentide-litellm.sh +0 -1
  60. package/out/scripts/agentide_litellm_hooks_v1.py +170 -418
  61. package/out/scripts/analytics/agent-fleet-widget.js +18 -257
  62. package/out/scripts/analytics/agentide-litellm-otel.config.yaml +4 -4
  63. package/out/scripts/analytics/duckdbLocator.js +2 -28
  64. package/out/scripts/analytics/generate-default-charts.py +43 -323
  65. package/out/scripts/analytics/hotspot-analysis-widget.js +4 -430
  66. package/out/scripts/analytics/index-traces.py +78 -1036
  67. package/out/scripts/analytics/session-comparison-widget.js +26 -472
  68. package/out/scripts/analytics/session-timeline-widget.js +25 -846
  69. package/out/scripts/analytics/setup-analytics.ps1 +8 -1
  70. package/out/scripts/analytics/setup-analytics.sh +13 -2
  71. package/out/scripts/analytics/token-cost-flamegraph-widget.js +4 -461
  72. package/out/scripts/analytics/token-cost-trend-widget.js +4 -534
  73. package/out/scripts/analytics/workflows-collector.cjs +4 -314
  74. package/out/scripts/analytics/workflows-daemon.mjs +9 -185
  75. package/out/scripts/analytics/workflows-widget.cjs +15 -159
  76. package/out/scripts/analytics/wow-model-widget.js +10 -120
  77. package/out/scripts/vendor-tools.mjs +2 -233
  78. package/out/skills/publish.js +3 -178
  79. package/out/store/github/setup.js +7 -212
  80. package/out/store/oramaIndex.js +2 -884
  81. package/out/sync.js +26 -1829
  82. package/out/terminalLogger.js +5 -358
  83. package/out/utils/pathSafety.js +2 -60
  84. package/out/utils/pythonRunner.js +4 -258
  85. package/out/utils/toolPath.js +2 -83
  86. package/out/workspaceFolders.js +2 -59
  87. package/package.json +1 -1
  88. package/out/agentpack/github.js +0 -547
  89. package/out/agentpack/index.js +0 -67
  90. package/out/agentpack/install.js +0 -297
  91. package/out/agentpack/manager.js +0 -441
  92. package/out/agentpack/manifest.js +0 -135
  93. package/out/agentpack/paths.js +0 -498
  94. package/out/agentpack/publish.js +0 -248
  95. package/out/agentpack/stores.js +0 -554
  96. package/out/analytics/dashboard/fleetStatusUtils.js +0 -30
  97. package/out/analytics/dashboard/fleetTitleUtils.js +0 -68
  98. package/out/analytics/dashboard/refreshPolicy.js +0 -16
  99. package/out/analytics/dashboard/scheduledFleetFingerprint.js +0 -22
  100. package/out/analytics/dashboard/scheduledFleetUtils.js +0 -22
  101. package/out/analytics/dashboard/sessionEventFleetStats.js +0 -118
  102. package/out/analytics/dashboard/viewsConfigMerge.js +0 -221
  103. package/out/analytics/dashboard/webview/codicon.ttf +0 -0
  104. package/out/analytics/identity.js +0 -0
  105. package/out/analytics/sessionEvents.js +0 -323
  106. package/out/auth/callbackUriParse.js +0 -59
  107. package/out/auth/types.js +0 -12
  108. package/out/auth-broker/config.js +0 -112
  109. package/out/auth-broker/jwt.js +0 -105
  110. package/out/auth-broker/pkce.js +0 -59
  111. package/out/auth-broker/server.js +0 -677
  112. package/out/auth-broker/store.js +0 -275
  113. package/out/authority/warrant.js +0 -206
  114. package/out/base-prompts/mcp-servers/.mcp.json +0 -13
  115. package/out/base-prompts/mcp-servers/langfuse-analytics/README.md +0 -142
  116. package/out/base-prompts/mcp-servers/langfuse-analytics/mcp.json +0 -13
  117. package/out/base-prompts/mcp-servers/langfuse-analytics/package-lock.json +0 -1192
  118. package/out/base-prompts/mcp-servers/langfuse-analytics/package.json +0 -23
  119. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/run-with-env.sh +0 -12
  120. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/sdk-test.js +0 -102
  121. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/simple-test.js +0 -137
  122. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-client.js +0 -118
  123. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-server.js +0 -209
  124. package/out/base-prompts/mcp-servers/langfuse-analytics/src/client.ts +0 -431
  125. package/out/base-prompts/mcp-servers/langfuse-analytics/src/index.ts +0 -270
  126. package/out/base-prompts/mcp-servers/langfuse-analytics/tsconfig.json +0 -18
  127. package/out/base-prompts/rules/AGENTS.md +0 -204
  128. package/out/base-prompts/skills/agent-browser/SKILL.md +0 -102
  129. package/out/base-prompts/skills/agent-builder/SKILL.md +0 -73
  130. package/out/base-prompts/skills/agent-builder/references/agent-pack.md +0 -63
  131. package/out/base-prompts/skills/agent-builder/references/crewai.md +0 -66
  132. package/out/base-prompts/skills/agent-builder/references/langchain.md +0 -60
  133. package/out/base-prompts/skills/agent-builder/references/raw-sdk.md +0 -73
  134. package/out/base-prompts/skills/agent-engine-creator/SKILL.md +0 -586
  135. package/out/base-prompts/skills/agent-engine-installer/SKILL.md +0 -106
  136. package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.mjs +0 -259
  137. package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.ps1 +0 -189
  138. package/out/base-prompts/skills/agenthippo-cli/SKILL.md +0 -69
  139. package/out/base-prompts/skills/agenthippo-cli/scripts/install.sh +0 -63
  140. package/out/base-prompts/skills/agentpack-creator/SKILL.md +0 -375
  141. package/out/base-prompts/skills/agentpack-creator/references/agent-templates.md +0 -261
  142. package/out/base-prompts/skills/agentpack-creator/references/agents-md-guide.md +0 -195
  143. package/out/base-prompts/skills/agentpack-creator/scripts/init_pack.py +0 -391
  144. package/out/base-prompts/skills/agentpack-creator/scripts/init_pack_test.py +0 -294
  145. package/out/base-prompts/skills/agentpack-testbench/SKILL.md +0 -135
  146. package/out/base-prompts/skills/algorithmic-art/LICENSE.txt +0 -202
  147. package/out/base-prompts/skills/algorithmic-art/SKILL.md +0 -405
  148. package/out/base-prompts/skills/algorithmic-art/templates/generator_template.js +0 -223
  149. package/out/base-prompts/skills/algorithmic-art/templates/viewer.html +0 -599
  150. package/out/base-prompts/skills/debug-agent/SKILL.md +0 -83
  151. package/out/base-prompts/skills/desktop-automation/SKILL.md +0 -166
  152. package/out/base-prompts/skills/desktop-automation/references/agenthippo-ui-recipes.md +0 -441
  153. package/out/base-prompts/skills/desktop-automation/scripts/windows-desktop-uia.psm1 +0 -280
  154. package/out/base-prompts/skills/docx/LICENSE.txt +0 -30
  155. package/out/base-prompts/skills/docx/SKILL.md +0 -197
  156. package/out/base-prompts/skills/docx/docx-js.md +0 -350
  157. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  158. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  159. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  160. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  161. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  162. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  163. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  164. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  165. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  166. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  167. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  168. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  169. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  170. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  171. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  172. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  173. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  174. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  175. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  176. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  177. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  178. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  179. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  180. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  181. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  182. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  183. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  184. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  185. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  186. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  187. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  188. package/out/base-prompts/skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
  189. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  190. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  191. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  192. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  193. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  194. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  195. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  196. package/out/base-prompts/skills/docx/ooxml/scripts/pack.py +0 -159
  197. package/out/base-prompts/skills/docx/ooxml/scripts/unpack.py +0 -29
  198. package/out/base-prompts/skills/docx/ooxml/scripts/validate.py +0 -69
  199. package/out/base-prompts/skills/docx/ooxml/scripts/validation/__init__.py +0 -15
  200. package/out/base-prompts/skills/docx/ooxml/scripts/validation/base.py +0 -951
  201. package/out/base-prompts/skills/docx/ooxml/scripts/validation/docx.py +0 -274
  202. package/out/base-prompts/skills/docx/ooxml/scripts/validation/pptx.py +0 -315
  203. package/out/base-prompts/skills/docx/ooxml/scripts/validation/redlining.py +0 -279
  204. package/out/base-prompts/skills/docx/ooxml.md +0 -610
  205. package/out/base-prompts/skills/docx/scripts/__init__.py +0 -1
  206. package/out/base-prompts/skills/docx/scripts/document.py +0 -1276
  207. package/out/base-prompts/skills/docx/scripts/templates/comments.xml +0 -3
  208. package/out/base-prompts/skills/docx/scripts/templates/commentsExtended.xml +0 -3
  209. package/out/base-prompts/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
  210. package/out/base-prompts/skills/docx/scripts/templates/commentsIds.xml +0 -3
  211. package/out/base-prompts/skills/docx/scripts/templates/people.xml +0 -3
  212. package/out/base-prompts/skills/docx/scripts/utilities.py +0 -374
  213. package/out/base-prompts/skills/gateway-outbound/SKILL.md +0 -136
  214. package/out/base-prompts/skills/mcp-builder/LICENSE.txt +0 -202
  215. package/out/base-prompts/skills/mcp-builder/SKILL.md +0 -328
  216. package/out/base-prompts/skills/mcp-builder/reference/evaluation.md +0 -602
  217. package/out/base-prompts/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
  218. package/out/base-prompts/skills/mcp-builder/reference/node_mcp_server.md +0 -970
  219. package/out/base-prompts/skills/mcp-builder/reference/python_mcp_server.md +0 -719
  220. package/out/base-prompts/skills/mcp-builder/scripts/connections.py +0 -151
  221. package/out/base-prompts/skills/mcp-builder/scripts/evaluation.py +0 -373
  222. package/out/base-prompts/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  223. package/out/base-prompts/skills/mcp-builder/scripts/requirements.txt +0 -2
  224. package/out/base-prompts/skills/openclaw/SKILL.md +0 -406
  225. package/out/base-prompts/skills/openclaw/scripts/run-smoke.sh +0 -61
  226. package/out/base-prompts/skills/pdf/LICENSE.txt +0 -30
  227. package/out/base-prompts/skills/pdf/SKILL.md +0 -294
  228. package/out/base-prompts/skills/pdf/forms.md +0 -205
  229. package/out/base-prompts/skills/pdf/reference.md +0 -612
  230. package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes.py +0 -70
  231. package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
  232. package/out/base-prompts/skills/pdf/scripts/check_fillable_fields.py +0 -12
  233. package/out/base-prompts/skills/pdf/scripts/convert_pdf_to_images.py +0 -35
  234. package/out/base-prompts/skills/pdf/scripts/create_validation_image.py +0 -41
  235. package/out/base-prompts/skills/pdf/scripts/extract_form_field_info.py +0 -152
  236. package/out/base-prompts/skills/pdf/scripts/fill_fillable_fields.py +0 -114
  237. package/out/base-prompts/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
  238. package/out/base-prompts/skills/pptx/LICENSE.txt +0 -30
  239. package/out/base-prompts/skills/pptx/SKILL.md +0 -484
  240. package/out/base-prompts/skills/pptx/html2pptx.md +0 -625
  241. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  242. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  243. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  244. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  245. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  246. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  247. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  248. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  249. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  250. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  251. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  252. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  253. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  254. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  255. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  256. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  257. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  258. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  259. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  260. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  261. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  262. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  263. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  264. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  265. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  266. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  267. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  268. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  269. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  270. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  271. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  272. package/out/base-prompts/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
  273. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  274. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  275. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  276. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  277. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  278. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  279. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  280. package/out/base-prompts/skills/pptx/ooxml/scripts/pack.py +0 -159
  281. package/out/base-prompts/skills/pptx/ooxml/scripts/unpack.py +0 -29
  282. package/out/base-prompts/skills/pptx/ooxml/scripts/validate.py +0 -69
  283. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
  284. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/base.py +0 -951
  285. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
  286. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
  287. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
  288. package/out/base-prompts/skills/pptx/ooxml.md +0 -427
  289. package/out/base-prompts/skills/pptx/scripts/html2pptx.js +0 -984
  290. package/out/base-prompts/skills/pptx/scripts/inventory.py +0 -1020
  291. package/out/base-prompts/skills/pptx/scripts/rearrange.py +0 -231
  292. package/out/base-prompts/skills/pptx/scripts/replace.py +0 -385
  293. package/out/base-prompts/skills/pptx/scripts/thumbnail.py +0 -450
  294. package/out/base-prompts/skills/prompt-lab/SKILL.md +0 -149
  295. package/out/base-prompts/skills/prompt-lab/scripts/query-analytics.sh +0 -2551
  296. package/out/base-prompts/skills/skill-creator/LICENSE.txt +0 -202
  297. package/out/base-prompts/skills/skill-creator/SKILL.md +0 -371
  298. package/out/base-prompts/skills/skill-creator/references/output-patterns.md +0 -82
  299. package/out/base-prompts/skills/skill-creator/references/workflows.md +0 -28
  300. package/out/base-prompts/skills/skill-creator/scripts/init_skill.py +0 -303
  301. package/out/base-prompts/skills/skill-creator/scripts/package_skill.py +0 -110
  302. package/out/base-prompts/skills/skill-creator/scripts/quick_validate.py +0 -95
  303. package/out/base-prompts/skills/skill-installer/SKILL.md +0 -251
  304. package/out/base-prompts/skills/skill-installer/references/store-api.md +0 -219
  305. package/out/base-prompts/skills/spotlight-dashboard/SKILL.md +0 -83
  306. package/out/base-prompts/skills/spotlight-insights/SKILL.md +0 -101
  307. package/out/base-prompts/skills/spotlight-optimize/SKILL.md +0 -93
  308. package/out/base-prompts/skills/spotlight-optimize/scripts/query-analytics.sh +0 -2551
  309. package/out/base-prompts/skills/spotlight-query/SKILL.md +0 -314
  310. package/out/base-prompts/skills/spotlight-query/references/otel-schema.md +0 -163
  311. package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.sh +0 -2551
  312. package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.test.sh +0 -744
  313. package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/sessions/sess-test-1.jsonl +0 -14
  314. package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/.duckdb-index.json +0 -7
  315. package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/sample.jsonl +0 -5
  316. package/out/base-prompts/skills/spotlight-report/SKILL.md +0 -86
  317. package/out/base-prompts/skills/spotlight-visualize/SKILL.md +0 -92
  318. package/out/base-prompts/skills/spotlight-visualize/scripts/query-analytics.sh +0 -2551
  319. package/out/base-prompts/skills/xlsx/LICENSE.txt +0 -30
  320. package/out/base-prompts/skills/xlsx/SKILL.md +0 -289
  321. package/out/base-prompts/skills/xlsx/recalc.py +0 -178
  322. package/out/branding.js +0 -49
  323. package/out/cli/commands/anywhere.js +0 -66
  324. package/out/cli/commands/ask.js +0 -246
  325. package/out/cli/commands/auth-broker.js +0 -24
  326. package/out/cli/commands/auth.js +0 -219
  327. package/out/cli/commands/chat.js +0 -357
  328. package/out/cli/commands/conformance.js +0 -249
  329. package/out/cli/commands/data-plane.js +0 -67
  330. package/out/cli/commands/deploy.js +0 -263
  331. package/out/cli/commands/gateway.js +0 -218
  332. package/out/cli/commands/idp.js +0 -85
  333. package/out/cli/commands/pack.js +0 -399
  334. package/out/cli/commands/probe-custom-engine.js +0 -82
  335. package/out/cli/commands/sandbox.js +0 -332
  336. package/out/cli/commands/serve.js +0 -1758
  337. package/out/cli/commands/store.js +0 -927
  338. package/out/cli/credential-context.js +0 -91
  339. package/out/cli/data-plane/broker.js +0 -78
  340. package/out/cli/data-plane/connector-host.js +0 -121
  341. package/out/cli/data-plane/egress.js +0 -189
  342. package/out/cli/data-plane/gateway.js +0 -218
  343. package/out/cli/data-plane/index.js +0 -152
  344. package/out/cli/data-plane/registry.js +0 -89
  345. package/out/cli/data-plane/remote.js +0 -106
  346. package/out/cli/data-plane/sidecar.js +0 -161
  347. package/out/cli/deploy/blueprints/registry.js +0 -84
  348. package/out/cli/deploy/layers/identity.js +0 -172
  349. package/out/cli/deploy-init.js +0 -3023
  350. package/out/cli/deps.js +0 -342
  351. package/out/cli/idp-init.js +0 -338
  352. package/out/cli/pack-install-ref.js +0 -15
  353. package/out/cli/pack-loader.js +0 -418
  354. package/out/cli/pack-runtime.js +0 -61
  355. package/out/cli/runtime.js +0 -450
  356. package/out/cli/serve-hardening.js +0 -607
  357. package/out/cli/state-sync.js +0 -424
  358. package/out/cli/utils.js +0 -231
  359. package/out/engines/base.js +0 -188
  360. package/out/engines/claude.js +0 -1254
  361. package/out/engines/codex.js +0 -862
  362. package/out/engines/custom.js +0 -674
  363. package/out/engines/customEngineIpc.js +0 -95
  364. package/out/engines/customEngineRunnerEmbed.js +0 -107
  365. package/out/engines/customRegistry.js +0 -274
  366. package/out/engines/embeddedCustomEngineRunner.generated.js +0 -9
  367. package/out/engines/engineApiKey.js +0 -138
  368. package/out/engines/install.js +0 -372
  369. package/out/engines/persistentEngineWorker.js +0 -320
  370. package/out/engines/publish.js +0 -341
  371. package/out/evidence/sessionShip.js +0 -610
  372. package/out/gateway/bridge.js +0 -843
  373. package/out/gateway/cli-agent-id.js +0 -36
  374. package/out/gateway/client.js +0 -336
  375. package/out/gateway/client.test.js +0 -395
  376. package/out/gateway/gateway-scope-errors.js +0 -14
  377. package/out/gateway/gatewayBackup.js +0 -76
  378. package/out/gateway/installSource.js +0 -68
  379. package/out/gateway/lifecycle.js +0 -3190
  380. package/out/gateway/openclaw-channel-routing.js +0 -317
  381. package/out/gateway/outboundHandles.js +0 -373
  382. package/out/gateway/outboundPaths.js +0 -75
  383. package/out/gateway/outboundSend.js +0 -254
  384. package/out/gateway/protocol.js +0 -48
  385. package/out/gateway/secretsPreflight.js +0 -90
  386. package/out/gateway/sessionRouting.js +0 -77
  387. package/out/headless/index.js +0 -539
  388. package/out/headless/sync.js +0 -473
  389. package/out/live-e2e/mcp-demo/server.mjs +0 -32
  390. package/out/live-probe/connector.mjs +0 -8
  391. package/out/live-probe/env-report.mjs +0 -8
  392. package/out/mcp.js +0 -654
  393. package/out/pack/caps.js +0 -271
  394. package/out/pack/governor.js +0 -309
  395. package/out/pack/lease-schema.js +0 -270
  396. package/out/pack/lease.js +0 -640
  397. package/out/pack/reconcile.js +0 -217
  398. package/out/pack/signature.js +0 -839
  399. package/out/permissions.js +0 -108
  400. package/out/permissions.mapping.yaml +0 -68
  401. package/out/registry/index.js +0 -332
  402. package/out/runner/host.js +0 -131
  403. package/out/runner/protocol.js +0 -108
  404. package/out/runner/remoteEngine.js +0 -130
  405. package/out/runtime/interfaces/config-provider.js +0 -32
  406. package/out/runtime/interfaces/edit-tracker.js +0 -24
  407. package/out/runtime/interfaces/index.js +0 -29
  408. package/out/runtime/interfaces/logger.js +0 -40
  409. package/out/runtime/interfaces/permission-handler.js +0 -66
  410. package/out/runtime/interfaces/session-store.js +0 -342
  411. package/out/runtime/vscode/vscode-session-store.js +0 -22
  412. package/out/sandbox/containerDriver.js +0 -570
  413. package/out/sandbox/processDriver.js +0 -315
  414. package/out/sandbox/sandboxRunner.js +0 -191
  415. package/out/sandbox/support.js +0 -301
  416. package/out/sandbox/types.js +0 -55
  417. package/out/scripts/analytics/fleet-local-adapter.js +0 -246
  418. package/out/scripts/analytics/live-fleet-4-collector.cjs +0 -315
  419. package/out/scripts/analytics/live-fleet-4-daemon.mjs +0 -134
  420. package/out/scripts/analytics/live-fleet-4-widget.cjs +0 -433
  421. package/out/scripts/gateway/Dockerfile.serve +0 -45
  422. package/out/scripts/gateway/docker-serve.sh +0 -248
  423. package/out/scripts/gateway/setup-gateway-server.ps1 +0 -953
  424. package/out/scripts/gateway/setup-gateway-server.sh +0 -935
  425. package/out/session.js +0 -272
  426. package/out/shared/agentEngines.js +0 -170
  427. package/out/shared/index.js +0 -109
  428. package/out/shared/models.js +0 -136
  429. package/out/shared/providers.js +0 -205
  430. package/out/spotlight/install.js +0 -345
  431. package/out/spotlight/publish.js +0 -544
  432. package/out/spotlight/yaml.js +0 -31
  433. package/out/store/index.js +0 -786
  434. package/out/store/shared.js +0 -241
  435. package/out/test/agentEnvFile.test.js +0 -97
  436. package/out/test/agentYaml.test.js +0 -373
  437. package/out/test/agentpack.test.js +0 -639
  438. package/out/test/analytics-lifecycle.test.js +0 -174
  439. package/out/test/analytics.test.js +0 -756
  440. package/out/test/auth-baseurl.test.js +0 -132
  441. package/out/test/auth-bootstrapApply.test.js +0 -123
  442. package/out/test/auth-broker-hardening.test.js +0 -227
  443. package/out/test/auth-broker.test.js +0 -541
  444. package/out/test/auth-callback.test.js +0 -62
  445. package/out/test/blueprint-registry.test.js +0 -105
  446. package/out/test/branding.test.js +0 -242
  447. package/out/test/caps-governor.test.js +0 -455
  448. package/out/test/cli-agent-id.test.js +0 -55
  449. package/out/test/codex-new-file-survival.test.js +0 -119
  450. package/out/test/configuration-scopes.test.js +0 -131
  451. package/out/test/credential-context.test.js +0 -160
  452. package/out/test/custom-env-layering.test.js +0 -151
  453. package/out/test/customEngineInstall.test.js +0 -100
  454. package/out/test/customRegistry.test.js +0 -122
  455. package/out/test/data-plane-engine-wiring.test.js +0 -250
  456. package/out/test/data-plane.test.js +0 -311
  457. package/out/test/deploy-init.test.js +0 -854
  458. package/out/test/deps-auto-install.test.js +0 -81
  459. package/out/test/egress-broker.test.js +0 -172
  460. package/out/test/engine-integration.test.js +0 -297
  461. package/out/test/enginePaths.test.js +0 -195
  462. package/out/test/enginePublish.test.js +0 -82
  463. package/out/test/fleetDisplayUtils.test.js +0 -100
  464. package/out/test/gateway-client.test.js +0 -409
  465. package/out/test/gateway-install-source.test.js +0 -111
  466. package/out/test/gateway-lifecycle.test.js +0 -608
  467. package/out/test/gateway-outbound.test.js +0 -538
  468. package/out/test/gateway-reset-mappings.test.js +0 -221
  469. package/out/test/gateway-route-index.test.js +0 -235
  470. package/out/test/gateway-secrets-preflight.test.js +0 -127
  471. package/out/test/gateway-session-routing.test.js +0 -65
  472. package/out/test/gateway-session-store.test.js +0 -216
  473. package/out/test/github.test.js +0 -232
  474. package/out/test/governor-hardening.test.js +0 -217
  475. package/out/test/headless-sync.test.js +0 -301
  476. package/out/test/helpers/manifest-fixtures.js +0 -27
  477. package/out/test/idp-init.test.js +0 -151
  478. package/out/test/lease-signature.test.js +0 -357
  479. package/out/test/lease-trust-root.test.js +0 -273
  480. package/out/test/lease-validation.test.js +0 -169
  481. package/out/test/lease.test.js +0 -114
  482. package/out/test/mcp-obo.test.js +0 -107
  483. package/out/test/mcp.test.js +0 -389
  484. package/out/test/model-routing.test.js +0 -133
  485. package/out/test/openclaw-channel-routing.test.js +0 -191
  486. package/out/test/pack-admission.test.js +0 -216
  487. package/out/test/pack-digest-parity.test.js +0 -140
  488. package/out/test/pack-reconcile.test.js +0 -183
  489. package/out/test/pack-signature-artifact.test.js +0 -103
  490. package/out/test/pack-signature.test.js +0 -176
  491. package/out/test/pack-trust-root.test.js +0 -202
  492. package/out/test/pathSafety.test.js +0 -63
  493. package/out/test/permissions.test.js +0 -175
  494. package/out/test/persistent-engine-worker.test.js +0 -220
  495. package/out/test/refreshPolicy.test.js +0 -60
  496. package/out/test/registry.test.js +0 -351
  497. package/out/test/remote-trust.test.js +0 -242
  498. package/out/test/runner-protocol.test.js +0 -249
  499. package/out/test/runtime.test.js +0 -349
  500. package/out/test/sandbox-driver.test.js +0 -553
  501. package/out/test/sandbox-hardening.test.js +0 -395
  502. package/out/test/sandbox-runner.test.js +0 -343
  503. package/out/test/scheduledFleetStorage.test.js +0 -72
  504. package/out/test/serve-gateway-turn.test.js +0 -267
  505. package/out/test/serve-hardening.test.js +0 -418
  506. package/out/test/serveClient.test.js +0 -209
  507. package/out/test/sessionJsonlFleet.test.js +0 -78
  508. package/out/test/sessionShip.test.js +0 -560
  509. package/out/test/shared.test.js +0 -173
  510. package/out/test/skills-mcp.test.js +0 -299
  511. package/out/test/spotlightPublish.test.js +0 -327
  512. package/out/test/spotlightYaml.test.js +0 -58
  513. package/out/test/state-sync-peer.test.js +0 -156
  514. package/out/test/store-install-safe.test.js +0 -69
  515. package/out/test/store.test.js +0 -331
  516. package/out/test/stores.test.js +0 -504
  517. package/out/test/sync-switch.test.js +0 -251
  518. package/out/test/teamViewDiscovery.test.js +0 -90
  519. package/out/test/tls-bypass.test.js +0 -90
  520. package/out/test/toolPath.test.js +0 -120
  521. package/out/test/utils.test.js +0 -308
  522. package/out/test/viewsConfigMerge.test.js +0 -180
  523. package/out/test/warrant.test.js +0 -138
  524. package/out/test/windows-command-line.test.js +0 -75
  525. package/out/utils/agentEnvFile.js +0 -131
  526. package/out/utils/binary.js +0 -175
  527. package/out/utils/index.js +0 -37
  528. package/out/utils/network.js +0 -74
  529. package/out/utils/paths.js +0 -116
  530. package/out/utils/pid.js +0 -180
  531. package/out/utils/resolveNodeBinary.js +0 -168
  532. package/out/utils/windowsCommandLine.js +0 -29
  533. package/out/utils.js +0 -968
@@ -1,612 +0,0 @@
1
- # PDF Processing Advanced Reference
2
-
3
- This document contains advanced PDF processing features, detailed examples, and additional libraries not covered in the main skill instructions.
4
-
5
- ## pypdfium2 Library (Apache/BSD License)
6
-
7
- ### Overview
8
- pypdfium2 is a Python binding for PDFium (Chromium's PDF library). It's excellent for fast PDF rendering, image generation, and serves as a PyMuPDF replacement.
9
-
10
- ### Render PDF to Images
11
- ```python
12
- import pypdfium2 as pdfium
13
- from PIL import Image
14
-
15
- # Load PDF
16
- pdf = pdfium.PdfDocument("document.pdf")
17
-
18
- # Render page to image
19
- page = pdf[0] # First page
20
- bitmap = page.render(
21
- scale=2.0, # Higher resolution
22
- rotation=0 # No rotation
23
- )
24
-
25
- # Convert to PIL Image
26
- img = bitmap.to_pil()
27
- img.save("page_1.png", "PNG")
28
-
29
- # Process multiple pages
30
- for i, page in enumerate(pdf):
31
- bitmap = page.render(scale=1.5)
32
- img = bitmap.to_pil()
33
- img.save(f"page_{i+1}.jpg", "JPEG", quality=90)
34
- ```
35
-
36
- ### Extract Text with pypdfium2
37
- ```python
38
- import pypdfium2 as pdfium
39
-
40
- pdf = pdfium.PdfDocument("document.pdf")
41
- for i, page in enumerate(pdf):
42
- text = page.get_text()
43
- print(f"Page {i+1} text length: {len(text)} chars")
44
- ```
45
-
46
- ## JavaScript Libraries
47
-
48
- ### pdf-lib (MIT License)
49
-
50
- pdf-lib is a powerful JavaScript library for creating and modifying PDF documents in any JavaScript environment.
51
-
52
- #### Load and Manipulate Existing PDF
53
- ```javascript
54
- import { PDFDocument } from 'pdf-lib';
55
- import fs from 'fs';
56
-
57
- async function manipulatePDF() {
58
- // Load existing PDF
59
- const existingPdfBytes = fs.readFileSync('input.pdf');
60
- const pdfDoc = await PDFDocument.load(existingPdfBytes);
61
-
62
- // Get page count
63
- const pageCount = pdfDoc.getPageCount();
64
- console.log(`Document has ${pageCount} pages`);
65
-
66
- // Add new page
67
- const newPage = pdfDoc.addPage([600, 400]);
68
- newPage.drawText('Added by pdf-lib', {
69
- x: 100,
70
- y: 300,
71
- size: 16
72
- });
73
-
74
- // Save modified PDF
75
- const pdfBytes = await pdfDoc.save();
76
- fs.writeFileSync('modified.pdf', pdfBytes);
77
- }
78
- ```
79
-
80
- #### Create Complex PDFs from Scratch
81
- ```javascript
82
- import { PDFDocument, rgb, StandardFonts } from 'pdf-lib';
83
- import fs from 'fs';
84
-
85
- async function createPDF() {
86
- const pdfDoc = await PDFDocument.create();
87
-
88
- // Add fonts
89
- const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica);
90
- const helveticaBold = await pdfDoc.embedFont(StandardFonts.HelveticaBold);
91
-
92
- // Add page
93
- const page = pdfDoc.addPage([595, 842]); // A4 size
94
- const { width, height } = page.getSize();
95
-
96
- // Add text with styling
97
- page.drawText('Invoice #12345', {
98
- x: 50,
99
- y: height - 50,
100
- size: 18,
101
- font: helveticaBold,
102
- color: rgb(0.2, 0.2, 0.8)
103
- });
104
-
105
- // Add rectangle (header background)
106
- page.drawRectangle({
107
- x: 40,
108
- y: height - 100,
109
- width: width - 80,
110
- height: 30,
111
- color: rgb(0.9, 0.9, 0.9)
112
- });
113
-
114
- // Add table-like content
115
- const items = [
116
- ['Item', 'Qty', 'Price', 'Total'],
117
- ['Widget', '2', '$50', '$100'],
118
- ['Gadget', '1', '$75', '$75']
119
- ];
120
-
121
- let yPos = height - 150;
122
- items.forEach(row => {
123
- let xPos = 50;
124
- row.forEach(cell => {
125
- page.drawText(cell, {
126
- x: xPos,
127
- y: yPos,
128
- size: 12,
129
- font: helveticaFont
130
- });
131
- xPos += 120;
132
- });
133
- yPos -= 25;
134
- });
135
-
136
- const pdfBytes = await pdfDoc.save();
137
- fs.writeFileSync('created.pdf', pdfBytes);
138
- }
139
- ```
140
-
141
- #### Advanced Merge and Split Operations
142
- ```javascript
143
- import { PDFDocument } from 'pdf-lib';
144
- import fs from 'fs';
145
-
146
- async function mergePDFs() {
147
- // Create new document
148
- const mergedPdf = await PDFDocument.create();
149
-
150
- // Load source PDFs
151
- const pdf1Bytes = fs.readFileSync('doc1.pdf');
152
- const pdf2Bytes = fs.readFileSync('doc2.pdf');
153
-
154
- const pdf1 = await PDFDocument.load(pdf1Bytes);
155
- const pdf2 = await PDFDocument.load(pdf2Bytes);
156
-
157
- // Copy pages from first PDF
158
- const pdf1Pages = await mergedPdf.copyPages(pdf1, pdf1.getPageIndices());
159
- pdf1Pages.forEach(page => mergedPdf.addPage(page));
160
-
161
- // Copy specific pages from second PDF (pages 0, 2, 4)
162
- const pdf2Pages = await mergedPdf.copyPages(pdf2, [0, 2, 4]);
163
- pdf2Pages.forEach(page => mergedPdf.addPage(page));
164
-
165
- const mergedPdfBytes = await mergedPdf.save();
166
- fs.writeFileSync('merged.pdf', mergedPdfBytes);
167
- }
168
- ```
169
-
170
- ### pdfjs-dist (Apache License)
171
-
172
- PDF.js is Mozilla's JavaScript library for rendering PDFs in the browser.
173
-
174
- #### Basic PDF Loading and Rendering
175
- ```javascript
176
- import * as pdfjsLib from 'pdfjs-dist';
177
-
178
- // Configure worker (important for performance)
179
- pdfjsLib.GlobalWorkerOptions.workerSrc = './pdf.worker.js';
180
-
181
- async function renderPDF() {
182
- // Load PDF
183
- const loadingTask = pdfjsLib.getDocument('document.pdf');
184
- const pdf = await loadingTask.promise;
185
-
186
- console.log(`Loaded PDF with ${pdf.numPages} pages`);
187
-
188
- // Get first page
189
- const page = await pdf.getPage(1);
190
- const viewport = page.getViewport({ scale: 1.5 });
191
-
192
- // Render to canvas
193
- const canvas = document.createElement('canvas');
194
- const context = canvas.getContext('2d');
195
- canvas.height = viewport.height;
196
- canvas.width = viewport.width;
197
-
198
- const renderContext = {
199
- canvasContext: context,
200
- viewport: viewport
201
- };
202
-
203
- await page.render(renderContext).promise;
204
- document.body.appendChild(canvas);
205
- }
206
- ```
207
-
208
- #### Extract Text with Coordinates
209
- ```javascript
210
- import * as pdfjsLib from 'pdfjs-dist';
211
-
212
- async function extractText() {
213
- const loadingTask = pdfjsLib.getDocument('document.pdf');
214
- const pdf = await loadingTask.promise;
215
-
216
- let fullText = '';
217
-
218
- // Extract text from all pages
219
- for (let i = 1; i <= pdf.numPages; i++) {
220
- const page = await pdf.getPage(i);
221
- const textContent = await page.getTextContent();
222
-
223
- const pageText = textContent.items
224
- .map(item => item.str)
225
- .join(' ');
226
-
227
- fullText += `\n--- Page ${i} ---\n${pageText}`;
228
-
229
- // Get text with coordinates for advanced processing
230
- const textWithCoords = textContent.items.map(item => ({
231
- text: item.str,
232
- x: item.transform[4],
233
- y: item.transform[5],
234
- width: item.width,
235
- height: item.height
236
- }));
237
- }
238
-
239
- console.log(fullText);
240
- return fullText;
241
- }
242
- ```
243
-
244
- #### Extract Annotations and Forms
245
- ```javascript
246
- import * as pdfjsLib from 'pdfjs-dist';
247
-
248
- async function extractAnnotations() {
249
- const loadingTask = pdfjsLib.getDocument('annotated.pdf');
250
- const pdf = await loadingTask.promise;
251
-
252
- for (let i = 1; i <= pdf.numPages; i++) {
253
- const page = await pdf.getPage(i);
254
- const annotations = await page.getAnnotations();
255
-
256
- annotations.forEach(annotation => {
257
- console.log(`Annotation type: ${annotation.subtype}`);
258
- console.log(`Content: ${annotation.contents}`);
259
- console.log(`Coordinates: ${JSON.stringify(annotation.rect)}`);
260
- });
261
- }
262
- }
263
- ```
264
-
265
- ## Advanced Command-Line Operations
266
-
267
- ### poppler-utils Advanced Features
268
-
269
- #### Extract Text with Bounding Box Coordinates
270
- ```bash
271
- # Extract text with bounding box coordinates (essential for structured data)
272
- pdftotext -bbox-layout document.pdf output.xml
273
-
274
- # The XML output contains precise coordinates for each text element
275
- ```
276
-
277
- #### Advanced Image Conversion
278
- ```bash
279
- # Convert to PNG images with specific resolution
280
- pdftoppm -png -r 300 document.pdf output_prefix
281
-
282
- # Convert specific page range with high resolution
283
- pdftoppm -png -r 600 -f 1 -l 3 document.pdf high_res_pages
284
-
285
- # Convert to JPEG with quality setting
286
- pdftoppm -jpeg -jpegopt quality=85 -r 200 document.pdf jpeg_output
287
- ```
288
-
289
- #### Extract Embedded Images
290
- ```bash
291
- # Extract all embedded images with metadata
292
- pdfimages -j -p document.pdf page_images
293
-
294
- # List image info without extracting
295
- pdfimages -list document.pdf
296
-
297
- # Extract images in their original format
298
- pdfimages -all document.pdf images/img
299
- ```
300
-
301
- ### qpdf Advanced Features
302
-
303
- #### Complex Page Manipulation
304
- ```bash
305
- # Split PDF into groups of pages
306
- qpdf --split-pages=3 input.pdf output_group_%02d.pdf
307
-
308
- # Extract specific pages with complex ranges
309
- qpdf input.pdf --pages input.pdf 1,3-5,8,10-end -- extracted.pdf
310
-
311
- # Merge specific pages from multiple PDFs
312
- qpdf --empty --pages doc1.pdf 1-3 doc2.pdf 5-7 doc3.pdf 2,4 -- combined.pdf
313
- ```
314
-
315
- #### PDF Optimization and Repair
316
- ```bash
317
- # Optimize PDF for web (linearize for streaming)
318
- qpdf --linearize input.pdf optimized.pdf
319
-
320
- # Remove unused objects and compress
321
- qpdf --optimize-level=all input.pdf compressed.pdf
322
-
323
- # Attempt to repair corrupted PDF structure
324
- qpdf --check input.pdf
325
- qpdf --fix-qdf damaged.pdf repaired.pdf
326
-
327
- # Show detailed PDF structure for debugging
328
- qpdf --show-all-pages input.pdf > structure.txt
329
- ```
330
-
331
- #### Advanced Encryption
332
- ```bash
333
- # Add password protection with specific permissions
334
- qpdf --encrypt user_pass owner_pass 256 --print=none --modify=none -- input.pdf encrypted.pdf
335
-
336
- # Check encryption status
337
- qpdf --show-encryption encrypted.pdf
338
-
339
- # Remove password protection (requires password)
340
- qpdf --password=secret123 --decrypt encrypted.pdf decrypted.pdf
341
- ```
342
-
343
- ## Advanced Python Techniques
344
-
345
- ### pdfplumber Advanced Features
346
-
347
- #### Extract Text with Precise Coordinates
348
- ```python
349
- import pdfplumber
350
-
351
- with pdfplumber.open("document.pdf") as pdf:
352
- page = pdf.pages[0]
353
-
354
- # Extract all text with coordinates
355
- chars = page.chars
356
- for char in chars[:10]: # First 10 characters
357
- print(f"Char: '{char['text']}' at x:{char['x0']:.1f} y:{char['y0']:.1f}")
358
-
359
- # Extract text by bounding box (left, top, right, bottom)
360
- bbox_text = page.within_bbox((100, 100, 400, 200)).extract_text()
361
- ```
362
-
363
- #### Advanced Table Extraction with Custom Settings
364
- ```python
365
- import pdfplumber
366
- import pandas as pd
367
-
368
- with pdfplumber.open("complex_table.pdf") as pdf:
369
- page = pdf.pages[0]
370
-
371
- # Extract tables with custom settings for complex layouts
372
- table_settings = {
373
- "vertical_strategy": "lines",
374
- "horizontal_strategy": "lines",
375
- "snap_tolerance": 3,
376
- "intersection_tolerance": 15
377
- }
378
- tables = page.extract_tables(table_settings)
379
-
380
- # Visual debugging for table extraction
381
- img = page.to_image(resolution=150)
382
- img.save("debug_layout.png")
383
- ```
384
-
385
- ### reportlab Advanced Features
386
-
387
- #### Create Professional Reports with Tables
388
- ```python
389
- from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph
390
- from reportlab.lib.styles import getSampleStyleSheet
391
- from reportlab.lib import colors
392
-
393
- # Sample data
394
- data = [
395
- ['Product', 'Q1', 'Q2', 'Q3', 'Q4'],
396
- ['Widgets', '120', '135', '142', '158'],
397
- ['Gadgets', '85', '92', '98', '105']
398
- ]
399
-
400
- # Create PDF with table
401
- doc = SimpleDocTemplate("report.pdf")
402
- elements = []
403
-
404
- # Add title
405
- styles = getSampleStyleSheet()
406
- title = Paragraph("Quarterly Sales Report", styles['Title'])
407
- elements.append(title)
408
-
409
- # Add table with advanced styling
410
- table = Table(data)
411
- table.setStyle(TableStyle([
412
- ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
413
- ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
414
- ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
415
- ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
416
- ('FONTSIZE', (0, 0), (-1, 0), 14),
417
- ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
418
- ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
419
- ('GRID', (0, 0), (-1, -1), 1, colors.black)
420
- ]))
421
- elements.append(table)
422
-
423
- doc.build(elements)
424
- ```
425
-
426
- ## Complex Workflows
427
-
428
- ### Extract Figures/Images from PDF
429
-
430
- #### Method 1: Using pdfimages (fastest)
431
- ```bash
432
- # Extract all images with original quality
433
- pdfimages -all document.pdf images/img
434
- ```
435
-
436
- #### Method 2: Using pypdfium2 + Image Processing
437
- ```python
438
- import pypdfium2 as pdfium
439
- from PIL import Image
440
- import numpy as np
441
-
442
- def extract_figures(pdf_path, output_dir):
443
- pdf = pdfium.PdfDocument(pdf_path)
444
-
445
- for page_num, page in enumerate(pdf):
446
- # Render high-resolution page
447
- bitmap = page.render(scale=3.0)
448
- img = bitmap.to_pil()
449
-
450
- # Convert to numpy for processing
451
- img_array = np.array(img)
452
-
453
- # Simple figure detection (non-white regions)
454
- mask = np.any(img_array != [255, 255, 255], axis=2)
455
-
456
- # Find contours and extract bounding boxes
457
- # (This is simplified - real implementation would need more sophisticated detection)
458
-
459
- # Save detected figures
460
- # ... implementation depends on specific needs
461
- ```
462
-
463
- ### Batch PDF Processing with Error Handling
464
- ```python
465
- import os
466
- import glob
467
- from pypdf import PdfReader, PdfWriter
468
- import logging
469
-
470
- logging.basicConfig(level=logging.INFO)
471
- logger = logging.getLogger(__name__)
472
-
473
- def batch_process_pdfs(input_dir, operation='merge'):
474
- pdf_files = glob.glob(os.path.join(input_dir, "*.pdf"))
475
-
476
- if operation == 'merge':
477
- writer = PdfWriter()
478
- for pdf_file in pdf_files:
479
- try:
480
- reader = PdfReader(pdf_file)
481
- for page in reader.pages:
482
- writer.add_page(page)
483
- logger.info(f"Processed: {pdf_file}")
484
- except Exception as e:
485
- logger.error(f"Failed to process {pdf_file}: {e}")
486
- continue
487
-
488
- with open("batch_merged.pdf", "wb") as output:
489
- writer.write(output)
490
-
491
- elif operation == 'extract_text':
492
- for pdf_file in pdf_files:
493
- try:
494
- reader = PdfReader(pdf_file)
495
- text = ""
496
- for page in reader.pages:
497
- text += page.extract_text()
498
-
499
- output_file = pdf_file.replace('.pdf', '.txt')
500
- with open(output_file, 'w', encoding='utf-8') as f:
501
- f.write(text)
502
- logger.info(f"Extracted text from: {pdf_file}")
503
-
504
- except Exception as e:
505
- logger.error(f"Failed to extract text from {pdf_file}: {e}")
506
- continue
507
- ```
508
-
509
- ### Advanced PDF Cropping
510
- ```python
511
- from pypdf import PdfWriter, PdfReader
512
-
513
- reader = PdfReader("input.pdf")
514
- writer = PdfWriter()
515
-
516
- # Crop page (left, bottom, right, top in points)
517
- page = reader.pages[0]
518
- page.mediabox.left = 50
519
- page.mediabox.bottom = 50
520
- page.mediabox.right = 550
521
- page.mediabox.top = 750
522
-
523
- writer.add_page(page)
524
- with open("cropped.pdf", "wb") as output:
525
- writer.write(output)
526
- ```
527
-
528
- ## Performance Optimization Tips
529
-
530
- ### 1. For Large PDFs
531
- - Use streaming approaches instead of loading entire PDF in memory
532
- - Use `qpdf --split-pages` for splitting large files
533
- - Process pages individually with pypdfium2
534
-
535
- ### 2. For Text Extraction
536
- - `pdftotext -bbox-layout` is fastest for plain text extraction
537
- - Use pdfplumber for structured data and tables
538
- - Avoid `pypdf.extract_text()` for very large documents
539
-
540
- ### 3. For Image Extraction
541
- - `pdfimages` is much faster than rendering pages
542
- - Use low resolution for previews, high resolution for final output
543
-
544
- ### 4. For Form Filling
545
- - pdf-lib maintains form structure better than most alternatives
546
- - Pre-validate form fields before processing
547
-
548
- ### 5. Memory Management
549
- ```python
550
- # Process PDFs in chunks
551
- def process_large_pdf(pdf_path, chunk_size=10):
552
- reader = PdfReader(pdf_path)
553
- total_pages = len(reader.pages)
554
-
555
- for start_idx in range(0, total_pages, chunk_size):
556
- end_idx = min(start_idx + chunk_size, total_pages)
557
- writer = PdfWriter()
558
-
559
- for i in range(start_idx, end_idx):
560
- writer.add_page(reader.pages[i])
561
-
562
- # Process chunk
563
- with open(f"chunk_{start_idx//chunk_size}.pdf", "wb") as output:
564
- writer.write(output)
565
- ```
566
-
567
- ## Troubleshooting Common Issues
568
-
569
- ### Encrypted PDFs
570
- ```python
571
- # Handle password-protected PDFs
572
- from pypdf import PdfReader
573
-
574
- try:
575
- reader = PdfReader("encrypted.pdf")
576
- if reader.is_encrypted:
577
- reader.decrypt("password")
578
- except Exception as e:
579
- print(f"Failed to decrypt: {e}")
580
- ```
581
-
582
- ### Corrupted PDFs
583
- ```bash
584
- # Use qpdf to repair
585
- qpdf --check corrupted.pdf
586
- qpdf --replace-input corrupted.pdf
587
- ```
588
-
589
- ### Text Extraction Issues
590
- ```python
591
- # Fallback to OCR for scanned PDFs
592
- import pytesseract
593
- from pdf2image import convert_from_path
594
-
595
- def extract_text_with_ocr(pdf_path):
596
- images = convert_from_path(pdf_path)
597
- text = ""
598
- for i, image in enumerate(images):
599
- text += pytesseract.image_to_string(image)
600
- return text
601
- ```
602
-
603
- ## License Information
604
-
605
- - **pypdf**: BSD License
606
- - **pdfplumber**: MIT License
607
- - **pypdfium2**: Apache/BSD License
608
- - **reportlab**: BSD License
609
- - **poppler-utils**: GPL-2 License
610
- - **qpdf**: Apache License
611
- - **pdf-lib**: MIT License
612
- - **pdfjs-dist**: Apache License
@@ -1,70 +0,0 @@
1
- from dataclasses import dataclass
2
- import json
3
- import sys
4
-
5
-
6
- # Script to check that the `fields.json` file that Claude creates when analyzing PDFs
7
- # does not have overlapping bounding boxes. See forms.md.
8
-
9
-
10
- @dataclass
11
- class RectAndField:
12
- rect: list[float]
13
- rect_type: str
14
- field: dict
15
-
16
-
17
- # Returns a list of messages that are printed to stdout for Claude to read.
18
- def get_bounding_box_messages(fields_json_stream) -> list[str]:
19
- messages = []
20
- fields = json.load(fields_json_stream)
21
- messages.append(f"Read {len(fields['form_fields'])} fields")
22
-
23
- def rects_intersect(r1, r2):
24
- disjoint_horizontal = r1[0] >= r2[2] or r1[2] <= r2[0]
25
- disjoint_vertical = r1[1] >= r2[3] or r1[3] <= r2[1]
26
- return not (disjoint_horizontal or disjoint_vertical)
27
-
28
- rects_and_fields = []
29
- for f in fields["form_fields"]:
30
- rects_and_fields.append(RectAndField(f["label_bounding_box"], "label", f))
31
- rects_and_fields.append(RectAndField(f["entry_bounding_box"], "entry", f))
32
-
33
- has_error = False
34
- for i, ri in enumerate(rects_and_fields):
35
- # This is O(N^2); we can optimize if it becomes a problem.
36
- for j in range(i + 1, len(rects_and_fields)):
37
- rj = rects_and_fields[j]
38
- if ri.field["page_number"] == rj.field["page_number"] and rects_intersect(ri.rect, rj.rect):
39
- has_error = True
40
- if ri.field is rj.field:
41
- messages.append(f"FAILURE: intersection between label and entry bounding boxes for `{ri.field['description']}` ({ri.rect}, {rj.rect})")
42
- else:
43
- messages.append(f"FAILURE: intersection between {ri.rect_type} bounding box for `{ri.field['description']}` ({ri.rect}) and {rj.rect_type} bounding box for `{rj.field['description']}` ({rj.rect})")
44
- if len(messages) >= 20:
45
- messages.append("Aborting further checks; fix bounding boxes and try again")
46
- return messages
47
- if ri.rect_type == "entry":
48
- if "entry_text" in ri.field:
49
- font_size = ri.field["entry_text"].get("font_size", 14)
50
- entry_height = ri.rect[3] - ri.rect[1]
51
- if entry_height < font_size:
52
- has_error = True
53
- messages.append(f"FAILURE: entry bounding box height ({entry_height}) for `{ri.field['description']}` is too short for the text content (font size: {font_size}). Increase the box height or decrease the font size.")
54
- if len(messages) >= 20:
55
- messages.append("Aborting further checks; fix bounding boxes and try again")
56
- return messages
57
-
58
- if not has_error:
59
- messages.append("SUCCESS: All bounding boxes are valid")
60
- return messages
61
-
62
- if __name__ == "__main__":
63
- if len(sys.argv) != 2:
64
- print("Usage: check_bounding_boxes.py [fields.json]")
65
- sys.exit(1)
66
- # Input file should be in the `fields.json` format described in forms.md.
67
- with open(sys.argv[1]) as f:
68
- messages = get_bounding_box_messages(f)
69
- for msg in messages:
70
- print(msg)