@atmem/architect 0.0.0-stage → 0.2.0-alpha.4.1
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/CONSTITUTION.md +144 -0
- package/README.md +33 -2
- package/agent-skills/discovery/SKILL.md +48 -0
- package/agent-skills/discovery/topics.json +139 -0
- package/agent-skills/generation-capabilities.json +760 -0
- package/agent-skills/service-lifecycle.json +21 -0
- package/agent-skills/specialists/architecture/SKILL.md +15 -0
- package/agent-skills/specialists/aws/SKILL.md +17 -0
- package/agent-skills/specialists/azure/SKILL.md +7 -0
- package/agent-skills/specialists/composition/SKILL.md +17 -0
- package/agent-skills/specialists/devops/SKILL.md +10 -0
- package/agent-skills/specialists/finops/SKILL.md +7 -0
- package/agent-skills/specialists/gcp/SKILL.md +7 -0
- package/agent-skills/specialists/ibm/SKILL.md +7 -0
- package/agent-skills/specialists/manifest.json +13 -0
- package/agent-skills/specialists/pulumi/SKILL.md +7 -0
- package/agent-skills/specialists/security/SKILL.md +7 -0
- package/agent-skills/specialists/terraform/SKILL.md +14 -0
- package/agent-skills/upstream/aws/LICENSE +175 -0
- package/agent-skills/upstream/aws/SKILL.md +125 -0
- package/agent-skills/upstream/azure/LICENSE +21 -0
- package/agent-skills/upstream/azure/SKILL.md +387 -0
- package/agent-skills/upstream/gcp/LICENSE +202 -0
- package/agent-skills/upstream/gcp/SKILL.md +159 -0
- package/agent-skills/upstream/manifest.json +57 -0
- package/agent-skills/upstream/pulumi/LICENSE +201 -0
- package/agent-skills/upstream/pulumi/SKILL.md +501 -0
- package/agent-skills/upstream/terraform/LICENSE +373 -0
- package/agent-skills/upstream/terraform/SKILL.md +316 -0
- package/agent-skills/workflows/workflows.json +601 -0
- package/cli/architect.mjs +3 -0
- package/cli/runtime.mjs +115 -0
- package/dist/assets/html2canvas.esm-QH1iLAAe.js +22 -0
- package/dist/assets/index-B97MkVMs.css +1 -0
- package/dist/assets/index-qtCM2D7O.js +21271 -0
- package/dist/assets/index.es-C6C0sneB.js +18 -0
- package/dist/assets/purify.es-CAi2OJFm.js +3 -0
- package/dist/assets/visual-export-DjbjgQbA.js +173 -0
- package/dist/favicon.svg +2 -0
- package/dist/fonts/DM-Sans-OFL.txt +93 -0
- package/dist/fonts/Manrope-OFL.txt +93 -0
- package/dist/fonts/NotoSans-Regular.ttf +0 -0
- package/dist/fonts/OFL.txt +94 -0
- package/dist/fonts/dm-sans-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/manrope-latin-wght-normal.woff2 +0 -0
- package/dist/index.html +4 -0
- package/dist/licenses/aws-architect-LICENSE.txt +17 -0
- package/dist/licenses/aws-mcp-LICENSE.txt +175 -0
- package/dist/licenses/aws-mcp-NOTICE.txt +1 -0
- package/dist/licenses/cloud-emulation-notices.txt +36619 -0
- package/dist/licenses/dependency-notices.txt +6379 -0
- package/dist/licenses/emulation-notices.txt +717 -0
- package/dist/licenses/github-copilot-sdk-LICENSE.txt +21 -0
- package/dist/licenses/memory-dependency-notices.txt +3319 -0
- package/dist/licenses/openarchflow-LICENSE.txt +21 -0
- package/dist/licenses/python-dependency-notices.txt +11951 -0
- package/docs/upstream-lock.json +26 -0
- package/knowledge/engineering-practices.json +536 -0
- package/package.json +30 -4
- package/packaging/uv-release-lock.json +54 -0
- package/public/licenses/aws-architect-LICENSE.txt +17 -0
- package/public/licenses/aws-mcp-LICENSE.txt +175 -0
- package/public/licenses/aws-mcp-NOTICE.txt +1 -0
- package/public/licenses/cloud-emulation-notices.txt +36619 -0
- package/public/licenses/dependency-notices.txt +6379 -0
- package/public/licenses/emulation-notices.txt +717 -0
- package/public/licenses/github-copilot-sdk-LICENSE.txt +21 -0
- package/public/licenses/memory-dependency-notices.txt +3319 -0
- package/public/licenses/openarchflow-LICENSE.txt +21 -0
- package/public/licenses/python-dependency-notices.txt +11951 -0
- package/scripts/terraform-render.mjs +8 -0
- package/server/__init__.py +0 -0
- package/server/abstraction.py +28 -0
- package/server/agent_runtime.py +153 -0
- package/server/app.py +257 -0
- package/server/architect.py +112 -0
- package/server/architecture_activity.py +67 -0
- package/server/attachments.py +101 -0
- package/server/cloud-emulation-requirements.txt +29 -0
- package/server/codex_app_server.py +219 -0
- package/server/codex_engineering_backend.py +266 -0
- package/server/codex_worker_policy.py +170 -0
- package/server/contracts.py +315 -0
- package/server/copilot_worker.py +16 -0
- package/server/dependency_mirror.py +54 -0
- package/server/design_patch.py +43 -0
- package/server/emulation-requirements.txt +8 -0
- package/server/emulation_adapters.py +20 -0
- package/server/emulation_routes.py +98 -0
- package/server/emulation_worker.py +351 -0
- package/server/engineering_artifacts.py +215 -0
- package/server/engineering_assets/application-runtime.json +4372 -0
- package/server/engineering_assets/architecture_work.schema.json +79 -0
- package/server/engineering_assets/materialize_runtime.py +62 -0
- package/server/engineering_assets/prepare_tools.py +96 -0
- package/server/engineering_assets/sql_validation.py +59 -0
- package/server/engineering_contexts.py +120 -0
- package/server/engineering_delivery.py +210 -0
- package/server/engineering_finalization.py +210 -0
- package/server/engineering_handoff.py +163 -0
- package/server/engineering_jobs.py +206 -0
- package/server/engineering_knowledge.py +75 -0
- package/server/engineering_reconciliation.py +159 -0
- package/server/engineering_routes.py +469 -0
- package/server/engineering_sessions.py +273 -0
- package/server/engineering_tools.py +166 -0
- package/server/generation_lint.py +18 -0
- package/server/local_providers.py +181 -0
- package/server/local_validation.py +236 -0
- package/server/memory-requirements.lock +181 -0
- package/server/memory-requirements.txt +6 -0
- package/server/memory_routes.py +82 -0
- package/server/memory_service.py +273 -0
- package/server/memory_worker.py +66 -0
- package/server/openai_voice.py +80 -0
- package/server/packaged_app.py +9 -0
- package/server/pricing.py +84 -0
- package/server/process_control_observation.py +31 -0
- package/server/prompts.py +123 -0
- package/server/public_faq_emulation_worker.py +44 -0
- package/server/requirements.lock +1618 -0
- package/server/requirements.txt +68 -0
- package/server/runtime_dependency_locks.py +27 -0
- package/server/runtime_evidence.py +93 -0
- package/server/settings.py +14 -0
- package/server/skills.py +103 -0
- package/server/storage_emulation_worker.py +160 -0
- package/server/structured_emulation_worker.py +48 -0
- package/server/terraform_routes.py +118 -0
- package/server/upstream/__init__.py +0 -0
- package/server/upstream/agent/__init__.py +1 -0
- package/server/upstream/agent/aws_architect.py +600 -0
- package/server/upstream/agent/config/__init__.py +1 -0
- package/server/upstream/agent/config/agent_config.py +82 -0
- package/server/upstream/agent/config/prompts.py +138 -0
- package/server/upstream/agent/rate_limiter.py +62 -0
- package/server/upstream/utils/__init__.py +1 -0
- package/server/upstream/utils/file_writer.py +43 -0
- package/server/validation_applicability.py +85 -0
- package/server/validation_jobs.py +252 -0
- package/server/validation_workers.py +48 -0
- package/server/voice_routes.py +91 -0
- package/server/voice_worker.py +26 -0
- package/specs/028-convergence-evaluation/evidence/20261110-ibm-invoice-native/registry-structured/qualification.json +72 -0
- package/specs/028-convergence-evaluation/evidence/20261110-invoice-runtime/durable-current/receipt.json +61 -0
- package/specs/029-general-purpose-engine/evidence/20261111-runtime-dependencies/sdk/receipt.json +22 -0
- package/src/ArchitectureActivity.jsx +54 -0
- package/src/ArchitectureWorkPanel.jsx +46 -0
- package/src/ArtifactChecks.jsx +49 -0
- package/src/BlockRequirements.jsx +13 -0
- package/src/BrainActivity.jsx +11 -0
- package/src/ChatMessage.jsx +19 -0
- package/src/ChatResizeHandle.jsx +6 -0
- package/src/CodePreview.jsx +8 -0
- package/src/ComponentReview.jsx +31 -0
- package/src/DeliveryViews.jsx +59 -0
- package/src/EmulationPanel.jsx +44 -0
- package/src/EngagementViews.jsx +385 -0
- package/src/EngineeringPanel.jsx +151 -0
- package/src/ImplementationDelivery.jsx +55 -0
- package/src/JourneyViews.jsx +400 -0
- package/src/MemoryPanel.jsx +46 -0
- package/src/OpenAIVoicePanel.jsx +65 -0
- package/src/OutputsView.jsx +65 -0
- package/src/TerraformView.jsx +57 -0
- package/src/WorkbenchDialogs.jsx +532 -0
- package/src/activity-presentation.mjs +28 -0
- package/src/ai-qualification-scenarios.mjs +31 -0
- package/src/approval-application-files.mjs +32 -0
- package/src/approval-applications.mjs +82 -0
- package/src/approval-spec-kit.mjs +30 -0
- package/src/architecture-activity.css +28 -0
- package/src/architecture-activity.mjs +63 -0
- package/src/architecture-work.mjs +176 -0
- package/src/artifact-work.mjs +103 -0
- package/src/async-documents.mjs +191 -0
- package/src/atflow.css +1140 -0
- package/src/atforma.css +748 -0
- package/src/atmem-tokens.css +79 -0
- package/src/aws-preflight.mjs +60 -0
- package/src/aws-public-faq.mjs +102 -0
- package/src/aws-validation-scenarios.mjs +10 -0
- package/src/aws-validation.mjs +48 -0
- package/src/azure-plan-mocks.mjs +25 -0
- package/src/azure-structured.mjs +133 -0
- package/src/bedrock-summary.mjs +152 -0
- package/src/bounded-rag.mjs +60 -0
- package/src/brand.css +9 -0
- package/src/canvas-view.mjs +28 -0
- package/src/capability-composition.mjs +44 -0
- package/src/chat-attachments.mjs +13 -0
- package/src/cloud-provider-locks.mjs +9 -0
- package/src/cloud-storage-scenarios.mjs +2 -0
- package/src/component-review.mjs +55 -0
- package/src/composition-spec-kit.mjs +30 -0
- package/src/consultation-context.mjs +15 -0
- package/src/consultation.mjs +52 -0
- package/src/container-contracts.mjs +5 -0
- package/src/container-inspection.mjs +75 -0
- package/src/container-runtime.mjs +30 -0
- package/src/container-security-inspection.mjs +49 -0
- package/src/container-terraform.mjs +109 -0
- package/src/conversation.mjs +17 -0
- package/src/core.mjs +863 -0
- package/src/cross-cloud-storage.mjs +100 -0
- package/src/delivery-capabilities.mjs +25 -0
- package/src/delivery.mjs +58 -0
- package/src/deployment-ownership.mjs +10 -0
- package/src/deployment-region.mjs +11 -0
- package/src/derive.mjs +31 -0
- package/src/design-build-flow.mjs +10 -0
- package/src/diagram-attention.mjs +24 -0
- package/src/discovery.mjs +359 -0
- package/src/document.mjs +170 -0
- package/src/emulation-feedback.mjs +61 -0
- package/src/emulation-guidance.mjs +37 -0
- package/src/engagement.mjs +274 -0
- package/src/engineering-client.mjs +73 -0
- package/src/engineering-defaults.mjs +17 -0
- package/src/engineering.css +31 -0
- package/src/enterprise-application.mjs +76 -0
- package/src/enterprise-aws-host-infrastructure.mjs +62 -0
- package/src/enterprise-aws-host-tests.mjs +15 -0
- package/src/enterprise-aws-infrastructure-tests.mjs +38 -0
- package/src/enterprise-aws-infrastructure.mjs +138 -0
- package/src/enterprise-google-infrastructure.mjs +84 -0
- package/src/enterprise-google-tests.mjs +25 -0
- package/src/estimate.mjs +188 -0
- package/src/existing-references.mjs +18 -0
- package/src/external-identities.mjs +17 -0
- package/src/faq-lambda-build.mjs +28 -0
- package/src/gcp-structured.mjs +104 -0
- package/src/generation-provider.mjs +7 -0
- package/src/generation-quality.mjs +69 -0
- package/src/handoff.mjs +141 -0
- package/src/ibm-registry.mjs +12 -0
- package/src/ibm-structured.mjs +103 -0
- package/src/identifiers.mjs +15 -0
- package/src/implementation-map.mjs +14 -0
- package/src/implementation-outcome.mjs +8 -0
- package/src/incomplete-terraform.mjs +9 -0
- package/src/integrations.ts +137 -0
- package/src/interface-contracts.mjs +30 -0
- package/src/invoice-application.mjs +66 -0
- package/src/invoice-aws-operations.mjs +136 -0
- package/src/invoice-aws.mjs +143 -0
- package/src/invoice-azure-operations.mjs +147 -0
- package/src/invoice-azure.mjs +134 -0
- package/src/invoice-builder.mjs +35 -0
- package/src/invoice-dependencies.mjs +43 -0
- package/src/invoice-gcp-operations.mjs +178 -0
- package/src/invoice-gcp.mjs +104 -0
- package/src/invoice-ibm-operations.mjs +278 -0
- package/src/invoice-ibm.mjs +142 -0
- package/src/invoice-operations.mjs +143 -0
- package/src/invoice-plan.mjs +45 -0
- package/src/invoice-region.mjs +6 -0
- package/src/invoice-spec-kit.mjs +61 -0
- package/src/invoice-state.mjs +7 -0
- package/src/invoice-terraform.mjs +29 -0
- package/src/invoice-tests.mjs +122 -0
- package/src/journey-workspace.css +72 -0
- package/src/journey.mjs +87 -0
- package/src/levels.mjs +145 -0
- package/src/local-agent.mjs +184 -0
- package/src/main.jsx +2458 -0
- package/src/model-policy-preflight.mjs +34 -0
- package/src/openai-voice.mjs +102 -0
- package/src/output-bundle.mjs +11 -0
- package/src/ownership-inspection.mjs +28 -0
- package/src/pack.mjs +201 -0
- package/src/pricing.mjs +31 -0
- package/src/production-state.mjs +8 -0
- package/src/project-copy.mjs +10 -0
- package/src/project-file.mjs +160 -0
- package/src/project-links.mjs +3 -0
- package/src/protected-state.mjs +43 -0
- package/src/public-faq-builder.mjs +19 -0
- package/src/public-faq-clouds.mjs +251 -0
- package/src/public-faq.mjs +122 -0
- package/src/pulumi.mjs +123 -0
- package/src/python-container.mjs +25 -0
- package/src/python-runtime.mjs +50 -0
- package/src/rag-handler.mjs +43 -0
- package/src/rag-web-assets.mjs +52 -0
- package/src/rag-web.mjs +68 -0
- package/src/records.mjs +177 -0
- package/src/resources.mjs +163 -0
- package/src/review.mjs +252 -0
- package/src/runtime/EnterpriseDocument.java +89 -0
- package/src/runtime/approved_http_destination.py +72 -0
- package/src/runtime/aws-lambda-qualification-lock.json +7 -0
- package/src/runtime/aws-python-lock.json +82 -0
- package/src/runtime/aws-web-python-lock.json +887 -0
- package/src/runtime/aws_json_model.py +42 -0
- package/src/runtime/azure-python-lock.json +863 -0
- package/src/runtime/azure-sources.json +8 -0
- package/src/runtime/azure-test-lock.json +23 -0
- package/src/runtime/azure_acceptance.py +192 -0
- package/src/runtime/azure_structured.py +153 -0
- package/src/runtime/bounded_rag.py +126 -0
- package/src/runtime/catalog_admin.py +70 -0
- package/src/runtime/cloud-sql-proxy-lock.json +8 -0
- package/src/runtime/cloud-sql-proxy-security-review.json +30 -0
- package/src/runtime/connector_cli.py +50 -0
- package/src/runtime/connector_sync.py +70 -0
- package/src/runtime/durable-python-lock.json +247 -0
- package/src/runtime/durable_workflow.py +325 -0
- package/src/runtime/enterprise-application-manifest.json +110 -0
- package/src/runtime/enterprise-application-sources.json +266 -0
- package/src/runtime/enterprise-auth-python-lock.json +592 -0
- package/src/runtime/enterprise-aws-host-bootstrap-source.json +1 -0
- package/src/runtime/enterprise-aws-host-probe-source.json +1 -0
- package/src/runtime/enterprise-aws-task-template.json +235 -0
- package/src/runtime/enterprise-document-lock.json +18 -0
- package/src/runtime/enterprise-document.Dockerfile +15 -0
- package/src/runtime/enterprise-runtime-aws-python-lock.json +1115 -0
- package/src/runtime/enterprise-runtime-azure-python-lock.json +1106 -0
- package/src/runtime/enterprise-runtime-gcp-python-lock.json +1060 -0
- package/src/runtime/enterprise-runtime-ibm-python-lock.json +1096 -0
- package/src/runtime/enterprise-runtime-python-lock.json +1058 -0
- package/src/runtime/enterprise-runtime.Dockerfile +15 -0
- package/src/runtime/enterprise-web-app.js +1 -0
- package/src/runtime/enterprise-web-entry.js +105 -0
- package/src/runtime/enterprise-web-lock.json +29 -0
- package/src/runtime/enterprise-web-notices.txt +229 -0
- package/src/runtime/enterprise-web.css +4 -0
- package/src/runtime/enterprise-web.html +8 -0
- package/src/runtime/enterprise_audit.py +91 -0
- package/src/runtime/enterprise_audit_schema.sql +25 -0
- package/src/runtime/enterprise_auth_schema.sql +67 -0
- package/src/runtime/enterprise_auth_store.py +241 -0
- package/src/runtime/enterprise_aws_host_bootstrap.py +120 -0
- package/src/runtime/enterprise_aws_host_probe.py +105 -0
- package/src/runtime/enterprise_aws_hosts.py +136 -0
- package/src/runtime/enterprise_aws_jobs.py +300 -0
- package/src/runtime/enterprise_aws_objects.py +93 -0
- package/src/runtime/enterprise_aws_transfer.py +83 -0
- package/src/runtime/enterprise_azure_batch_api.py +128 -0
- package/src/runtime/enterprise_azure_host.py +599 -0
- package/src/runtime/enterprise_azure_jobs.py +294 -0
- package/src/runtime/enterprise_azure_objects.py +234 -0
- package/src/runtime/enterprise_azure_pool.py +161 -0
- package/src/runtime/enterprise_azure_transfer.py +122 -0
- package/src/runtime/enterprise_configuration.py +136 -0
- package/src/runtime/enterprise_document.py +116 -0
- package/src/runtime/enterprise_document_cli.py +32 -0
- package/src/runtime/enterprise_document_contract.py +54 -0
- package/src/runtime/enterprise_document_job.py +109 -0
- package/src/runtime/enterprise_document_jobs.py +122 -0
- package/src/runtime/enterprise_document_jobs_schema.sql +23 -0
- package/src/runtime/enterprise_extraction_cache.py +186 -0
- package/src/runtime/enterprise_extraction_schema.sql +17 -0
- package/src/runtime/enterprise_google_jobs.py +275 -0
- package/src/runtime/enterprise_google_transfer.py +85 -0
- package/src/runtime/enterprise_http.py +212 -0
- package/src/runtime/enterprise_identity.py +52 -0
- package/src/runtime/enterprise_knowledge.py +152 -0
- package/src/runtime/enterprise_models.py +94 -0
- package/src/runtime/enterprise_native.py +181 -0
- package/src/runtime/enterprise_oauth.py +132 -0
- package/src/runtime/enterprise_operator.py +160 -0
- package/src/runtime/enterprise_parser_service.py +136 -0
- package/src/runtime/enterprise_parser_transport.py +68 -0
- package/src/runtime/enterprise_queries.py +255 -0
- package/src/runtime/enterprise_queries_schema.sql +27 -0
- package/src/runtime/enterprise_query_service.py +111 -0
- package/src/runtime/enterprise_secrets.py +110 -0
- package/src/runtime/enterprise_sessions.py +95 -0
- package/src/runtime/enterprise_sources.py +260 -0
- package/src/runtime/enterprise_web.py +39 -0
- package/src/runtime/enterprise_worker.py +68 -0
- package/src/runtime/export_contract_acceptance.py +18 -0
- package/src/runtime/faq-output-contract.json +40 -0
- package/src/runtime/faq-web-app.js +41 -0
- package/src/runtime/faq-web.css +1 -0
- package/src/runtime/faq-web.html +6 -0
- package/src/runtime/gcp-sources.json +9 -0
- package/src/runtime/gcp_acceptance.py +110 -0
- package/src/runtime/gcp_structured.py +150 -0
- package/src/runtime/http_acceptance.py +39 -0
- package/src/runtime/iap-web-app.js +36 -0
- package/src/runtime/iap-web-source.json +1 -0
- package/src/runtime/ibm-python-lock.json +856 -0
- package/src/runtime/ibm-sources.json +9 -0
- package/src/runtime/ibm_acceptance.py +133 -0
- package/src/runtime/ibm_structured.py +113 -0
- package/src/runtime/invoice-azapi-provider-lock.json +7 -0
- package/src/runtime/invoice-ibm-provider-lock.json +7 -0
- package/src/runtime/invoice-parser-lock.json +1199 -0
- package/src/runtime/invoice-parser-python-lock.json +56 -0
- package/src/runtime/invoice-parser.Dockerfile +190 -0
- package/src/runtime/invoice-sources.json +58 -0
- package/src/runtime/invoice-test-sources.json +24 -0
- package/src/runtime/invoice-web.css +2 -0
- package/src/runtime/invoice-web.html +12 -0
- package/src/runtime/invoice-web.js +112 -0
- package/src/runtime/invoice_configuration.py +17 -0
- package/src/runtime/invoice_document.py +95 -0
- package/src/runtime/invoice_extraction.py +96 -0
- package/src/runtime/invoice_http.py +129 -0
- package/src/runtime/invoice_identity.py +5 -0
- package/src/runtime/invoice_maintenance.py +40 -0
- package/src/runtime/invoice_native.py +77 -0
- package/src/runtime/invoice_object_store.py +153 -0
- package/src/runtime/invoice_operations.py +108 -0
- package/src/runtime/invoice_operator.py +79 -0
- package/src/runtime/invoice_operator_core.py +39 -0
- package/src/runtime/invoice_operator_job.py +147 -0
- package/src/runtime/invoice_parser_cli.py +17 -0
- package/src/runtime/invoice_parser_identity.py +39 -0
- package/src/runtime/invoice_parser_service.py +89 -0
- package/src/runtime/invoice_parser_transport.py +89 -0
- package/src/runtime/invoice_processing.py +24 -0
- package/src/runtime/invoice_retention.py +16 -0
- package/src/runtime/invoice_runtime_secrets.py +43 -0
- package/src/runtime/invoice_stage.py +80 -0
- package/src/runtime/invoice_web.py +39 -0
- package/src/runtime/invoice_worker.py +50 -0
- package/src/runtime/lambda_faq.py +5 -0
- package/src/runtime/parser-requirements.lock +4 -0
- package/src/runtime/policy_review.py +18 -0
- package/src/runtime/postgres-qualification-lock.json +21 -0
- package/src/runtime/public-faq-sources.json +22 -0
- package/src/runtime/public_catalog_admin.py +122 -0
- package/src/runtime/public_catalog_store.py +125 -0
- package/src/runtime/public_faq.py +144 -0
- package/src/runtime/public_faq_app.py +49 -0
- package/src/runtime/python-container-lock.json +18 -0
- package/src/runtime/rag-sources.json +10 -0
- package/src/runtime/rag_acceptance.py +60 -0
- package/src/runtime/rag_aws_adapter.py +95 -0
- package/src/runtime/rds-ca-source.json +9 -0
- package/src/runtime/rds-global-ca.pem +2888 -0
- package/src/runtime/state-contract-check-source.json +4 -0
- package/src/runtime/state_contract_check.py +338 -0
- package/src/runtime/structured-source.json +1 -0
- package/src/runtime/structured-web-app.js +71 -0
- package/src/runtime/structured-web-source.json +1 -0
- package/src/runtime/structured_http.py +105 -0
- package/src/runtime/structured_output.py +48 -0
- package/src/runtime/web-python-lock.json +802 -0
- package/src/runtime/web_user_admin.py +44 -0
- package/src/runtime/workflow_application.py +62 -0
- package/src/runtime/workflow_bindings.py +128 -0
- package/src/runtime/workflow_configuration.py +40 -0
- package/src/runtime/workflow_connection.py +105 -0
- package/src/runtime/workflow_contract.py +54 -0
- package/src/runtime/workflow_database.py +94 -0
- package/src/runtime/workflow_errors.py +6 -0
- package/src/runtime/workflow_http.py +178 -0
- package/src/runtime/workflow_identity.py +69 -0
- package/src/runtime/workflow_payload.py +118 -0
- package/src/runtime/workflow_process_stage.py +88 -0
- package/src/runtime/workflow_profile.py +91 -0
- package/src/runtime/workflow_review.py +106 -0
- package/src/runtime/workflow_role_bootstrap.py +104 -0
- package/src/runtime/workflow_schema.sql +72 -0
- package/src/runtime/workflow_worker.py +142 -0
- package/src/runtime-settings.mjs +15 -0
- package/src/s3-access.mjs +14 -0
- package/src/source-contracts.mjs +17 -0
- package/src/spec-kit.mjs +186 -0
- package/src/state-custody.mjs +32 -0
- package/src/state-inspection.mjs +45 -0
- package/src/state-spec-kit.mjs +13 -0
- package/src/storage-tests.mjs +25 -0
- package/src/structured-api.mjs +133 -0
- package/src/structured-contract.mjs +19 -0
- package/src/structured-operation-policy.mjs +2 -0
- package/src/structured-web.mjs +17 -0
- package/src/style.css +1 -0
- package/src/system-description.mjs +26 -0
- package/src/terraform-admission.mjs +66 -0
- package/src/terraform-composition.mjs +83 -0
- package/src/terraform-expressions.mjs +46 -0
- package/src/terraform-validation-coverage.mjs +11 -0
- package/src/terraform.mjs +128 -0
- package/src/text-statistics.mjs +51 -0
- package/src/upstream/openarchflow/format-payload.ts +26 -0
- package/src/upstream/openarchflow/import/mermaid.ts +205 -0
- package/src/upstream/openarchflow/import/sql-ddl.ts +109 -0
- package/src/upstream/openarchflow/layout.ts +54 -0
- package/src/upstream/openarchflow/providers/aws.ts +196 -0
- package/src/upstream/openarchflow/providers/azure.ts +126 -0
- package/src/upstream/openarchflow/providers/cloudnative.ts +71 -0
- package/src/upstream/openarchflow/providers/generic.ts +227 -0
- package/src/upstream/openarchflow/providers/integration.ts +22 -0
- package/src/upstream/openarchflow/providers/types.ts +2 -0
- package/src/upstream/openarchflow/templates.ts +937 -0
- package/src/upstream-catalog.mjs +10 -0
- package/src/useChatScroll.jsx +36 -0
- package/src/useEmulation.jsx +36 -0
- package/src/validation-receipt.mjs +10 -0
- package/src/visual-export.mjs +92 -0
- package/src/voice-conversation.mjs +117 -0
- package/src/work-intake.mjs +24 -0
- package/src/workflow-runtime-inventory.mjs +3 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Explicit, conditional catalog writes for a deployment/operator identity.
|
|
2
|
+
|
|
3
|
+
End-user API roles have no access to these write APIs. Never print document data.
|
|
4
|
+
"""
|
|
5
|
+
import json
|
|
6
|
+
import re
|
|
7
|
+
import uuid
|
|
8
|
+
import time
|
|
9
|
+
from boto3.dynamodb.types import TypeSerializer
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def validate_document(value):
|
|
13
|
+
fields={'id','title','text','allowedSubjects','allowedRegions'}
|
|
14
|
+
if not isinstance(value,dict) or not fields.issubset(value) or not set(value).issubset(fields|{'sourceId','authorizationExpiresAt'}):raise ValueError('Supply the exact document and ACL fields')
|
|
15
|
+
if not isinstance(value['id'],str) or not re.fullmatch(r'[A-Za-z0-9_-]{1,128}',value['id']):raise ValueError('Invalid document ID')
|
|
16
|
+
for key,limit in [('title',500),('text',8000)]:
|
|
17
|
+
if not isinstance(value[key],str) or not value[key].strip() or len(value[key].encode('utf-8'))>limit:raise ValueError('Invalid document size')
|
|
18
|
+
for key,pattern in [('allowedSubjects',r'[A-Za-z0-9_-]{1,100}'),('allowedRegions',r'[A-Z]{2}')]:
|
|
19
|
+
items=value[key]
|
|
20
|
+
if not isinstance(items,list) or len(items)>100 or not all(isinstance(x,str) and re.fullmatch(pattern,x) for x in items) or len(set(items))!=len(items):raise ValueError('Invalid explicit access list')
|
|
21
|
+
if 'sourceId' in value or 'authorizationExpiresAt' in value:
|
|
22
|
+
if not isinstance(value.get('sourceId'),str) or not re.fullmatch(r'[A-Za-z0-9_-]{1,100}',value['sourceId']):raise ValueError('Invalid connector source identity')
|
|
23
|
+
expiry=value.get('authorizationExpiresAt')
|
|
24
|
+
if not isinstance(expiry,int) or isinstance(expiry,bool) or not time.time()<expiry<=time.time()+300:raise ValueError('Connector authorization leases must expire within five minutes')
|
|
25
|
+
return dict(value)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def encode(value):
|
|
29
|
+
serializer=TypeSerializer();return {key:serializer.serialize(item) for key,item in value.items()}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def put_document(client,table,document,expected_revision=None):
|
|
33
|
+
document=validate_document(document);revision=str(uuid.uuid4())
|
|
34
|
+
item={**document,'recordId':'DOCUMENT#'+document['id'],'kind':'DOCUMENT','revision':revision}
|
|
35
|
+
put={'TableName':table,'Item':encode(item)}
|
|
36
|
+
if expected_revision is None:
|
|
37
|
+
put['ConditionExpression']='attribute_not_exists(recordId)'
|
|
38
|
+
operations=[{'Put':put},{'Update':{'TableName':table,'Key':{'recordId':{'S':'CATALOG#metadata'}},'UpdateExpression':'SET documentCount = if_not_exists(documentCount, :zero) + :one','ConditionExpression':'attribute_not_exists(documentCount) OR documentCount < :limit','ExpressionAttributeValues':{':zero':{'N':'0'},':one':{'N':'1'},':limit':{'N':'100'}}}}]
|
|
39
|
+
client.transact_write_items(TransactItems=operations,ClientRequestToken=str(uuid.uuid4()))
|
|
40
|
+
else:
|
|
41
|
+
if not isinstance(expected_revision,str) or not expected_revision:raise ValueError('An expected revision is required')
|
|
42
|
+
client.put_item(**put,ConditionExpression='revision = :expected',ExpressionAttributeValues={':expected':{'S':expected_revision}})
|
|
43
|
+
return {'id':document['id'],'revision':revision}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def delete_document(client,table,document_id,expected_revision):
|
|
47
|
+
if not isinstance(document_id,str) or not re.fullmatch(r'[A-Za-z0-9_-]{1,128}',document_id) or not isinstance(expected_revision,str) or not expected_revision:raise ValueError('Exact document ID and revision are required')
|
|
48
|
+
client.transact_write_items(TransactItems=[{'Delete':{'TableName':table,'Key':{'recordId':{'S':'DOCUMENT#'+document_id}},'ConditionExpression':'revision = :expected','ExpressionAttributeValues':{':expected':{'S':expected_revision}}}},{'Update':{'TableName':table,'Key':{'recordId':{'S':'CATALOG#metadata'}},'UpdateExpression':'SET documentCount = documentCount - :one','ConditionExpression':'documentCount >= :one','ExpressionAttributeValues':{':one':{'N':'1'}}}}],ClientRequestToken=str(uuid.uuid4()))
|
|
49
|
+
return {'id':document_id,'deleted':True}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def main():
|
|
53
|
+
import argparse
|
|
54
|
+
import boto3
|
|
55
|
+
from botocore.config import Config
|
|
56
|
+
parser=argparse.ArgumentParser(description=__doc__)
|
|
57
|
+
parser.add_argument('--table',required=True);parser.add_argument('--region',required=True);parser.add_argument('--account',required=True)
|
|
58
|
+
parser.add_argument('--document');parser.add_argument('--delete-id');parser.add_argument('--expected-revision')
|
|
59
|
+
parser.add_argument('--confirm-write',action='store_true',required=True)
|
|
60
|
+
args=parser.parse_args()
|
|
61
|
+
if bool(args.document)==bool(args.delete_id):parser.error('Choose exactly one document file or delete ID')
|
|
62
|
+
session=boto3.Session(region_name=args.region);config=Config(ignore_configured_endpoint_urls=True,connect_timeout=3,read_timeout=10,retries={'total_max_attempts':2})
|
|
63
|
+
if session.client('sts',config=config).get_caller_identity()['Account']!=args.account:raise SystemExit('Account mismatch')
|
|
64
|
+
client=session.client('dynamodb',config=config)
|
|
65
|
+
if args.document:
|
|
66
|
+
from pathlib import Path
|
|
67
|
+
result=put_document(client,args.table,json.loads(Path(args.document).read_text()),args.expected_revision)
|
|
68
|
+
else:result=delete_document(client,args.table,args.delete_id,args.expected_revision)
|
|
69
|
+
print(json.dumps(result))
|
|
70
|
+
if __name__=='__main__':main()
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"image": "gcr.io/cloud-sql-connectors/cloud-sql-proxy@sha256:7d156a5c466e31596afd6c8ed134f19c207a297418392fdad2686524ca4e7a3c",
|
|
3
|
+
"version": "2.27.0",
|
|
4
|
+
"sourceRevision": "6ddead5c3b7c25da0f4c7cadbad6b9ee601b4ffa",
|
|
5
|
+
"release": "https://github.com/GoogleCloudPlatform/cloud-sql-proxy/releases/tag/v2.27.0",
|
|
6
|
+
"reviewedAt": "2026-11-10",
|
|
7
|
+
"boundary": "Maintained upstream dependency, exact registry image digest. Native private-IP/IAM integration requires destination tests. No cloud deployment."
|
|
8
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "atmem-exact-dependency-review-v1",
|
|
3
|
+
"status": "reviewed-not-affected-by-listed-findings",
|
|
4
|
+
"reviewedAt": "2026-11-10",
|
|
5
|
+
"imageIndex": "gcr.io/cloud-sql-connectors/cloud-sql-proxy@sha256:7d156a5c466e31596afd6c8ed134f19c207a297418392fdad2686524ca4e7a3c",
|
|
6
|
+
"platformManifest": "sha256:adcbb6a16e70236f26902b7d986008df118923558839062f6d26832c5f200078",
|
|
7
|
+
"platform": "linux/amd64",
|
|
8
|
+
"binarySha256": "7b04024b125e0b3908fc3f0a18bc6e7fa54a27078228ef5f30885e63a4f1f5d3",
|
|
9
|
+
"scanner": "govulncheck v1.9.0; binary symbol mode",
|
|
10
|
+
"findings": [
|
|
11
|
+
{
|
|
12
|
+
"id": "GO-2026-5932",
|
|
13
|
+
"status": "not_affected",
|
|
14
|
+
"justification": "vulnerable_code_not_present"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "GO-2026-6860",
|
|
18
|
+
"status": "not_affected",
|
|
19
|
+
"justification": "vulnerable_code_not_present"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "GO-2026-6866",
|
|
23
|
+
"status": "not_affected",
|
|
24
|
+
"justification": "vulnerable_code_not_present"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"evidence": "specs/028-convergence-evaluation/evidence/20261110-proxy-binary-applicability",
|
|
28
|
+
"positiveControl": "Same affected Go modules deliberately compiled into an unexecuted Linux binary; all listed issues detected at package and symbol level.",
|
|
29
|
+
"boundary": "Applies only to the listed findings and exact AMD64 artifact. Module-version inventory remains true. No blanket clean-security, native database/TLS/IAM or deployment claim. Repeat independent review for changed image or new findings."
|
|
30
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Run a reviewed normalized source contract against the bounded AWS catalog."""
|
|
2
|
+
import argparse
|
|
3
|
+
import hashlib
|
|
4
|
+
import json
|
|
5
|
+
import os
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
import boto3
|
|
8
|
+
from boto3.dynamodb.types import TypeDeserializer
|
|
9
|
+
from botocore.config import Config
|
|
10
|
+
from catalog_admin import put_document,delete_document
|
|
11
|
+
from connector_sync import fetch_snapshot,synchronize
|
|
12
|
+
|
|
13
|
+
class Checkpoint:
|
|
14
|
+
def __init__(self,path):self.path=path
|
|
15
|
+
def load(self,source):
|
|
16
|
+
if not self.path.exists():return None
|
|
17
|
+
data=json.loads(self.path.read_text())
|
|
18
|
+
if data['source']!=source:raise ValueError('Checkpoint source mismatch')
|
|
19
|
+
return data['value']
|
|
20
|
+
def save(self,source,value):
|
|
21
|
+
temporary=self.path.with_suffix('.pending')
|
|
22
|
+
descriptor=os.open(temporary,os.O_WRONLY|os.O_CREAT|os.O_TRUNC,0o600)
|
|
23
|
+
with os.fdopen(descriptor,'w') as target:json.dump({'source':source,'value':value},target)
|
|
24
|
+
temporary.replace(self.path)
|
|
25
|
+
class Store:
|
|
26
|
+
def __init__(self,client,table):self.client=client;self.table=table;self.decoder=TypeDeserializer()
|
|
27
|
+
def get(self,key):
|
|
28
|
+
item=self.client.get_item(TableName=self.table,Key={'recordId':{'S':'DOCUMENT#'+key}},ConsistentRead=True).get('Item')
|
|
29
|
+
return {k:self.decoder.deserialize(v) for k,v in item.items()} if item else None
|
|
30
|
+
def put(self,item,expected):return put_document(self.client,self.table,item,expected)
|
|
31
|
+
def delete(self,key,expected):return delete_document(self.client,self.table,key,expected)
|
|
32
|
+
|
|
33
|
+
def main():
|
|
34
|
+
parser=argparse.ArgumentParser(description=__doc__)
|
|
35
|
+
for name in ['endpoint','source-id','table','account','region','checkpoint']:parser.add_argument('--'+name,required=True)
|
|
36
|
+
parser.add_argument('--allow-local-fixture',action='store_true')
|
|
37
|
+
parser.add_argument('--confirm-sync',action='store_true',required=True)
|
|
38
|
+
args=parser.parse_args()
|
|
39
|
+
checkpoint=Path(args.checkpoint);checkpoint.parent.mkdir(parents=True,exist_ok=True)
|
|
40
|
+
lock=checkpoint.with_suffix('.lock');descriptor=os.open(lock,os.O_WRONLY|os.O_CREAT|os.O_EXCL,0o600)
|
|
41
|
+
try:
|
|
42
|
+
with os.fdopen(descriptor,'w') as target:target.write(str(os.getpid()))
|
|
43
|
+
snapshot=fetch_snapshot(args.endpoint,os.getenv('ATMEM_SOURCE_TOKEN'),args.allow_local_fixture)
|
|
44
|
+
config=Config(ignore_configured_endpoint_urls=True,connect_timeout=3,read_timeout=10,retries={'total_max_attempts':2})
|
|
45
|
+
session=boto3.Session(region_name=args.region)
|
|
46
|
+
if session.client('sts',config=config).get_caller_identity()['Account']!=args.account:raise ValueError('Account mismatch')
|
|
47
|
+
receipt=synchronize(snapshot,args.source_id,Store(session.client('dynamodb',config=config),args.table),Checkpoint(checkpoint))
|
|
48
|
+
print(json.dumps(receipt))
|
|
49
|
+
finally:lock.unlink()
|
|
50
|
+
if __name__=='__main__':main()
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Normalized source snapshot contract; vendor permission mapping is separately verified.
|
|
2
|
+
|
|
3
|
+
Local contract fixtures do not establish SharePoint or Confluence compatibility.
|
|
4
|
+
A complete snapshot carries explicit resolved subject/region ACLs for every item.
|
|
5
|
+
"""
|
|
6
|
+
import hashlib
|
|
7
|
+
import json
|
|
8
|
+
import time
|
|
9
|
+
from urllib.request import Request, build_opener, HTTPRedirectHandler
|
|
10
|
+
from urllib.parse import urlsplit
|
|
11
|
+
from catalog_admin import validate_document
|
|
12
|
+
|
|
13
|
+
class NoRedirect(HTTPRedirectHandler):
|
|
14
|
+
def redirect_request(self,request,fp,code,msg,headers,newurl):
|
|
15
|
+
raise ValueError('Source redirects are not allowed')
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def fetch_snapshot(endpoint,token=None,allow_local_fixture=False):
|
|
19
|
+
url=urlsplit(endpoint)
|
|
20
|
+
local=url.hostname in {'127.0.0.1','localhost','::1'}
|
|
21
|
+
if url.username or url.password or url.fragment or url.query:raise ValueError('Use a credential-free source endpoint')
|
|
22
|
+
if url.scheme!='https' and not (allow_local_fixture and local and url.scheme=='http'):raise ValueError('HTTPS is required outside an explicit loopback fixture')
|
|
23
|
+
headers={'Accept':'application/json'}
|
|
24
|
+
if token:headers['Authorization']='Bearer '+token
|
|
25
|
+
with build_opener(NoRedirect).open(Request(endpoint,headers=headers),timeout=10) as response:
|
|
26
|
+
raw=response.read(1_000_001)
|
|
27
|
+
if len(raw)>1_000_000:raise ValueError('Source snapshot exceeds the bounded contract')
|
|
28
|
+
value=json.loads(raw)
|
|
29
|
+
if not isinstance(value,dict) or value.get('complete') is not True or value.get('permissionsComplete') is not True:raise ValueError('Incomplete source data or permissions; do not publish a partial snapshot')
|
|
30
|
+
if not isinstance(value.get('snapshotId'),str) or not value['snapshotId'] or not isinstance(value.get('documents'),list) or len(value['documents'])>100:raise ValueError('Invalid bounded source snapshot')
|
|
31
|
+
return value
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def normalized_documents(snapshot,source_id,lease_seconds=60):
|
|
35
|
+
if not isinstance(lease_seconds,int) or not 1<=lease_seconds<=300:raise ValueError('Authorization freshness must be 1–300 seconds')
|
|
36
|
+
if not isinstance(snapshot,dict) or snapshot.get('complete') is not True or snapshot.get('permissionsComplete') is not True or not isinstance(snapshot.get('documents'),list) or len(snapshot['documents'])>100:raise ValueError('Incomplete bounded snapshot')
|
|
37
|
+
result={};expiry=int(time.time())+lease_seconds
|
|
38
|
+
for entry in snapshot['documents']:
|
|
39
|
+
if not isinstance(entry,dict) or not isinstance(entry.get('sourceId'),str) or not isinstance(entry.get('sourceVersion'),str) or not entry.get('sourceId') or not entry.get('sourceVersion'):raise ValueError('Exact source identity and version are required')
|
|
40
|
+
identity=hashlib.sha256(json.dumps([source_id,entry['sourceId']],separators=(',',':')).encode()).hexdigest()
|
|
41
|
+
if identity in result:raise ValueError('Duplicate source identity')
|
|
42
|
+
doc={'id':identity,'title':entry.get('title'),'text':entry.get('text'),'allowedSubjects':entry.get('allowedSubjects'),'allowedRegions':entry.get('allowedRegions'),'sourceId':source_id,'authorizationExpiresAt':expiry}
|
|
43
|
+
result[identity]={'document':validate_document(doc),'sourceVersion':entry['sourceVersion']}
|
|
44
|
+
return result
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def synchronize(snapshot,source_id,store,checkpoint,lease_seconds=60):
|
|
48
|
+
"""Conditional, retryable writes; checkpoint only after a complete reconciliation.
|
|
49
|
+
|
|
50
|
+
The store is a source-scoped adapter with get/put/delete; each mutation checks
|
|
51
|
+
the current revision. Failed syncs never renew missing documents' leases.
|
|
52
|
+
"""
|
|
53
|
+
desired=normalized_documents(snapshot,source_id,lease_seconds)
|
|
54
|
+
previous=checkpoint.load(source_id) or {'documents':{}}
|
|
55
|
+
inventory=set(previous['documents'])|set(previous.get('pending',[]))
|
|
56
|
+
checkpoint.save(source_id,{**previous,'pending':sorted(inventory|set(desired))})
|
|
57
|
+
completed={}
|
|
58
|
+
for identity,entry in desired.items():
|
|
59
|
+
current=store.get(identity)
|
|
60
|
+
if current and current.get('sourceId')!=source_id:raise ValueError('Source ownership mismatch')
|
|
61
|
+
saved=store.put(entry['document'],current.get('revision') if current else None)
|
|
62
|
+
completed[identity]={'revision':saved['revision'],'sourceVersion':entry['sourceVersion']}
|
|
63
|
+
for identity in inventory-set(desired):
|
|
64
|
+
current=store.get(identity)
|
|
65
|
+
if current:
|
|
66
|
+
if current.get('sourceId')!=source_id:raise ValueError('Source ownership mismatch')
|
|
67
|
+
store.delete(identity,current['revision'])
|
|
68
|
+
result={'snapshotId':snapshot['snapshotId'],'documents':completed}
|
|
69
|
+
checkpoint.save(source_id,result)
|
|
70
|
+
return {'status':'synchronized','documents':len(completed),'authorizationLeaseSeconds':lease_seconds}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
{
|
|
2
|
+
"requirements": "procrastinate==3.10.0 \\\n --hash=sha256:949ad25b4377c30e03a9d0e053d15dfa47ef02b3f12ae8a7f3254686183c152c\npython-dateutil==2.9.0.post0 \\\n --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427\npsycopg==3.3.8 \\\n --hash=sha256:ca50af6072ba9ea6866f33021975230c2555d7bfdb9d8f94ca3af5c3d1bf2167\npsycopg-binary==3.3.8 \\\n --hash=sha256:00c226f718901ce022bcee2e0779dc2f0a6d8bcedd5a3818e21ff25564efaa97 \\\n --hash=sha256:0332e83c2e78b1c8c00c1095688f9b332bdde9d5e9d61b8ce1cdcaf716a19b9e \\\n --hash=sha256:09676448a9bbc5c09ce8d578a6958a0bb8175e63c94edf6d88a62d2b07fadd23 \\\n --hash=sha256:0d483014dde0bd5404801aa91ebbd7912006065dd8d244a962f228fe44bfc08b \\\n --hash=sha256:0f454d1d8e8071c7ec5fc10db6204334c36bba5ad30005c4b8c35859b1250ac6 \\\n --hash=sha256:0fd106e47b7d1f82744b23b6dd31856435e46c3d1b3d4972325d76f2e7a3d771 \\\n --hash=sha256:1126ff5eae645a304e6ca94e1c79cc19249fb54517b923ee5862badd2fabb334 \\\n --hash=sha256:1f65e8e84e13b34ef40011b30c7e6eb39578956c4a0f326a0a5a274a3d84f812 \\\n --hash=sha256:281d0e891fa8c2bb231a97a5a57522cc2a9664c3f77b9fb007d2719bc1afd29e \\\n --hash=sha256:2f72c18d75d16500fe2f7f300945d68fba9dbb883aef20ba4be0c386afbbf2e9 \\\n --hash=sha256:31dd2597df303d22a2cabf73c40bb05afaf4ca1394e22935b97f627d4968c87d \\\n --hash=sha256:382e3a1fcc7988cd05bfa68db7cc50189e785c05be212d27b524f0cc983fc77a \\\n --hash=sha256:39bc3b42e6486ae8ace820df93b00dce4858338e8a428d14d8e71130e852bab1 \\\n --hash=sha256:419a52eb62bdc0bf9eff80039329435c55a1943b1fa12f4d0cbdc45b5f856c5b \\\n --hash=sha256:41c31b175084a85232b6ea5f8eb474491b6c963302c69b46fa2ed60afb888b62 \\\n --hash=sha256:42718d7e5732aa1feb0a7f0ff7e0404fd080528bd4694b40b31ef0b146eda8e1 \\\n --hash=sha256:4bedd0fbbbebe0c0f66b34c3f6be972ce38357ce3451510e1dcf5025f7011dba \\\n --hash=sha256:522acdc8a71a042b407851658eb1da85fe09c78b222b2233faef7da3385a757b \\\n --hash=sha256:5a3925d0c67b0452db066d97d0452af012e7bd2fdf8e6ab4ab0392df8906a6e1 \\\n --hash=sha256:5deec7746acf1c742572b8bf8599f2f61a38c9925015d77254d87d3781169b3f \\\n --hash=sha256:5f51d97b67276e90cda022ad363eca61dbe855dbb5342e358469006d4b5254df \\\n --hash=sha256:5fd40b5ced3f8b458024ea434f2dfee7aa62a65663089bde26c41302f6c31b2e \\\n --hash=sha256:6891b6d9d25103c31411b50f83f9a8aba63f4cbcc63b009f461c115bfaf7b78d \\\n --hash=sha256:6bde86fb307fe1698fbbfeaa96130d4825f265afbeff217b959c1905b86f924d \\\n --hash=sha256:6d899f361effad9a23d90940b6b55683bc87ed2d457ef64a7fa76fee7c3b9dfc \\\n --hash=sha256:6ff02f23b7d95de68f42d5ebe91374540d3d31851d83d9cd37e6e71a5dbd0bcd \\\n --hash=sha256:710183a2e29c72050c3a447f9f566de27c6efea9da40bf7b800381ac57026204 \\\n --hash=sha256:78f92c5c9c9177b247b0f72f03412bc829185786525a8cf8742460066762a7d1 \\\n --hash=sha256:7d2b484e8ced7c3292e811d28087814467aecd3ef19badb64ed45a0f5fd78bf8 \\\n --hash=sha256:804041b79916b0e8021a1130650d724741eff1e81ccec8133abf357b4d284a24 \\\n --hash=sha256:9199be795608cbd3e6cc39b21c19e6043c44bc15d5a1d28f1df379830c553dd5 \\\n --hash=sha256:9353240f6e58d4a988f3ca842185f5349594153dcddd05e30f83c7d8badfbe0e \\\n --hash=sha256:9a7b232d55ab7ba22be48487c5f0adb7a6941fd54b436bdbbb72df4e5a740fb2 \\\n --hash=sha256:9daff4d6257969b02678943d62bfd83b971004f6efef68d5b767ac69c2222751 \\\n --hash=sha256:a09aa2ba7927e9b11bd5bddb6d33cec274235d6f54f1ab777ed71c932cfc8d72 \\\n --hash=sha256:a565d8446b59d26dcf75b08d3ccd4e85b750edba9e53a396cb7a4652d7cbc9e8 \\\n --hash=sha256:a63be4f745b778654e3c438d1b0e31bcf5ce265151c6982d5c6d5d286bae84c0 \\\n --hash=sha256:a7cdba018e4decf3837793c1e18dbe3dd71709adef54892ab83d81c00e866dc3 \\\n --hash=sha256:aa7af0d2d1194b65b8c4d0056c5607de6c38fb6a295f04087d17e1c9d2d11fba \\\n --hash=sha256:b26fbeb64c3ec29d799c89709f9500bd3bfa452ae22bdac3e11c3bb15fb057dc \\\n --hash=sha256:bb88457e8357a8709ab04f542c07361a816793f012a1c9818a4edd86d02cde4d \\\n --hash=sha256:bf9388216da2069ca0dbad58479bb83e4b979ed35c4a80d247399ac93361417c \\\n --hash=sha256:bf96efb4530605813b30d664f5d3b510540d89434a8e89dd7c62fb2d4fa4278f \\\n --hash=sha256:c2154bd84cf20148d9a59e3ade04f0f754462b96cfac91d54d76ef33af7946e5 \\\n --hash=sha256:c3a8420317a3b3910a08b77a952ef8f8051da61622c6a2e03fc51b75761c6acf \\\n --hash=sha256:c3ac86af1a7ac65fe3461d831e8bc9fa62bc247ef1b73d58e9dd4ed406be4bfd \\\n --hash=sha256:ced3499d480a979b956536b3f71a4736451bf3a976e4e400fc5c4b8dd3f43b23 \\\n --hash=sha256:d01495f37407899a699726710e26d6105654273a12afc8fe87784743b4802844 \\\n --hash=sha256:d4de096987b9f7c346879e164637de91a66067378b1ee4b49f07d1bac0e2847a \\\n --hash=sha256:da101085aa9f74817e48fc96dda859528fc52fabcf81e27c3640d1df17dd6dcb \\\n --hash=sha256:df35063b88af16c08bb8960aac9882cce620aea478dfec5a67cff397b575b97d \\\n --hash=sha256:e0972d8de5a0d855d76624f559a6ce5dd068fb4bbfa01e1d7cf929e6800dc4f0 \\\n --hash=sha256:e09cc11a367cbb147bacec0a41d748d22245e322827911d9c82b6066a8ba2059 \\\n --hash=sha256:e42c0e37eaed1ff03c24008561bca218eae8ec5ca4405a37897c6245ead8d612 \\\n --hash=sha256:e4332b7178062649e29d2770905f20e6a4b2dfc54581dcfcd919aeaed26291f4 \\\n --hash=sha256:e8f1addbaec62c9e2bf5b3ae4b32a20c793c06de7d57471f6509a127f1c902f4 \\\n --hash=sha256:eb4cd3f0ad6ebcf2baeb94f93d87138044976b57b7113b6321ac3c5cf70a8130 \\\n --hash=sha256:ec6773395189417c92102b34c77ed299f6111fbbc37d50d4fa12ab819f763669 \\\n --hash=sha256:ed65d1b32a7f9684ab682296ac7cac1dd972bb8d86c9336753bc915efc3515f4 \\\n --hash=sha256:ef2dcdad18f7e6b0241dafbaad3033ca5c12e07755418ece4c3a90e9665e434e \\\n --hash=sha256:f09cb4e7744522d71048a8998ff841c7af942a61ffbd4142a140b42d89b950fe \\\n --hash=sha256:f31dea98f8c5c6c60e8e049388f24eec14088518e2ded0f892d96c785401e688 \\\n --hash=sha256:f719b1b6498b3562843be83add8714c8967da95bb9aa626aae157a8ca31e4742 \\\n --hash=sha256:fc134798cd646a15326004bbeff4c2719e000a9ac52f6b893a767f7c5276e24b \\\n --hash=sha256:fc9b9922899a3ca6193fd1d96920329c10acb72d3fad0dbc87b1ecdd8a791c14 \\\n --hash=sha256:fe26e72b87ca280e538f4f78d1a956df0ae6ed51aab73ccc4c1dcf6f25256438\nsix==1.17.0 \\\n --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274\nasgiref==3.13.0 \\\n --hash=sha256:f9596a2434512686473d50f96ff6207fbba49ae1a785dfac614df4aeb085674d\nattrs==26.1.0 \\\n --hash=sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309\ncroniter==7.0.0 \\\n --hash=sha256:92090bce3cef195a037a46b78430c4cdd6250e90671d9d7dcd9e486147daaca4\npackaging==26.3 \\\n --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c\npsycopg-pool==3.3.3 \\\n --hash=sha256:9b9cd6a4fcec47a410f7e82d408540e7f77b478509e91b44c1a5457a13e5ff37\ntyping_extensions==4.16.0 \\\n --hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8\n",
|
|
3
|
+
"sources": [
|
|
4
|
+
{
|
|
5
|
+
"name": "procrastinate",
|
|
6
|
+
"version": "3.10.0",
|
|
7
|
+
"metadataUrl": "https://pypi.org/pypi/procrastinate/3.10.0/json",
|
|
8
|
+
"metadataSha256": "27a67e99d508fbc5e47a3820310b4d2cebb7eca13d1e566a75d0ff6b8b163f2c",
|
|
9
|
+
"wheelHashes": [
|
|
10
|
+
"949ad25b4377c30e03a9d0e053d15dfa47ef02b3f12ae8a7f3254686183c152c"
|
|
11
|
+
],
|
|
12
|
+
"requiresDist": [
|
|
13
|
+
"asgiref",
|
|
14
|
+
"attrs",
|
|
15
|
+
"croniter",
|
|
16
|
+
"packaging",
|
|
17
|
+
"psycopg[pool]",
|
|
18
|
+
"python-dateutil",
|
|
19
|
+
"typing-extensions",
|
|
20
|
+
"aiopg; extra == \"aiopg\"",
|
|
21
|
+
"psycopg2-binary; extra == \"aiopg\"",
|
|
22
|
+
"django>=2.2; extra == \"django\"",
|
|
23
|
+
"psycopg2-binary; extra == \"psycopg2\"",
|
|
24
|
+
"sphinx; extra == \"sphinx\"",
|
|
25
|
+
"sqlalchemy~=2.0; extra == \"sqlalchemy\""
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "python-dateutil",
|
|
30
|
+
"version": "2.9.0.post0",
|
|
31
|
+
"metadataUrl": "https://pypi.org/pypi/python-dateutil/2.9.0.post0/json",
|
|
32
|
+
"metadataSha256": "7938916002e8d70c9d32cbaf43c467d163af3aadd8c3b358bda5babd1f7836ee",
|
|
33
|
+
"wheelHashes": [
|
|
34
|
+
"a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
|
|
35
|
+
],
|
|
36
|
+
"requiresDist": [
|
|
37
|
+
"six >=1.5"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "psycopg",
|
|
42
|
+
"version": "3.3.8",
|
|
43
|
+
"metadataUrl": "https://pypi.org/pypi/psycopg/3.3.8/json",
|
|
44
|
+
"metadataSha256": "62594b13af083d1e220fe9adc63c044cc406a48044697fe16d78ae0a8d046daf",
|
|
45
|
+
"wheelHashes": [
|
|
46
|
+
"ca50af6072ba9ea6866f33021975230c2555d7bfdb9d8f94ca3af5c3d1bf2167"
|
|
47
|
+
],
|
|
48
|
+
"requiresDist": [
|
|
49
|
+
"typing-extensions>=4.6; python_version < \"3.13\"",
|
|
50
|
+
"tzdata; sys_platform == \"win32\"",
|
|
51
|
+
"psycopg-c==3.3.8; implementation_name != \"pypy\" and extra == \"c\"",
|
|
52
|
+
"psycopg-binary==3.3.8; implementation_name != \"pypy\" and extra == \"binary\"",
|
|
53
|
+
"psycopg-pool; extra == \"pool\"",
|
|
54
|
+
"anyio>=4.0; extra == \"test\"",
|
|
55
|
+
"mypy>=2.1.0; implementation_name != \"pypy\" and extra == \"test\"",
|
|
56
|
+
"pproxy>=2.7; extra == \"test\"",
|
|
57
|
+
"pytest>=6.2.5; extra == \"test\"",
|
|
58
|
+
"pytest-cov>=3.0; extra == \"test\"",
|
|
59
|
+
"pytest-randomly>=3.5; extra == \"test\"",
|
|
60
|
+
"ast-comments>=1.1.2; extra == \"dev\"",
|
|
61
|
+
"black>=26.1.0; extra == \"dev\"",
|
|
62
|
+
"codespell>=2.2; extra == \"dev\"",
|
|
63
|
+
"cython-lint>=0.21; extra == \"dev\"",
|
|
64
|
+
"dnspython>=2.1; extra == \"dev\"",
|
|
65
|
+
"flake8>=4.0; extra == \"dev\"",
|
|
66
|
+
"isort[colors]>=6.0; extra == \"dev\"",
|
|
67
|
+
"isort-psycopg>=0.0.3; extra == \"dev\"",
|
|
68
|
+
"mypy>=2.1.0; extra == \"dev\"",
|
|
69
|
+
"pre-commit>=4.0.1; extra == \"dev\"",
|
|
70
|
+
"types-setuptools>=57.4; extra == \"dev\"",
|
|
71
|
+
"types-shapely>=2.0; extra == \"dev\"",
|
|
72
|
+
"wheel>=0.37; extra == \"dev\"",
|
|
73
|
+
"Sphinx>=9.1; extra == \"docs\"",
|
|
74
|
+
"furo==2025.12.19; extra == \"docs\"",
|
|
75
|
+
"sphinx-autobuild>=2025.8.25; extra == \"docs\"",
|
|
76
|
+
"sphinx-autodoc-typehints>=3.10.2; extra == \"docs\""
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "psycopg-binary",
|
|
81
|
+
"version": "3.3.8",
|
|
82
|
+
"metadataUrl": "https://pypi.org/pypi/psycopg-binary/3.3.8/json",
|
|
83
|
+
"metadataSha256": "51f585cac5a702a7b6a4c595ba4c6512ea35ba26fbeb89c05b7d93fa079d3a16",
|
|
84
|
+
"wheelHashes": [
|
|
85
|
+
"00c226f718901ce022bcee2e0779dc2f0a6d8bcedd5a3818e21ff25564efaa97",
|
|
86
|
+
"0332e83c2e78b1c8c00c1095688f9b332bdde9d5e9d61b8ce1cdcaf716a19b9e",
|
|
87
|
+
"09676448a9bbc5c09ce8d578a6958a0bb8175e63c94edf6d88a62d2b07fadd23",
|
|
88
|
+
"0d483014dde0bd5404801aa91ebbd7912006065dd8d244a962f228fe44bfc08b",
|
|
89
|
+
"0f454d1d8e8071c7ec5fc10db6204334c36bba5ad30005c4b8c35859b1250ac6",
|
|
90
|
+
"0fd106e47b7d1f82744b23b6dd31856435e46c3d1b3d4972325d76f2e7a3d771",
|
|
91
|
+
"1126ff5eae645a304e6ca94e1c79cc19249fb54517b923ee5862badd2fabb334",
|
|
92
|
+
"1f65e8e84e13b34ef40011b30c7e6eb39578956c4a0f326a0a5a274a3d84f812",
|
|
93
|
+
"281d0e891fa8c2bb231a97a5a57522cc2a9664c3f77b9fb007d2719bc1afd29e",
|
|
94
|
+
"2f72c18d75d16500fe2f7f300945d68fba9dbb883aef20ba4be0c386afbbf2e9",
|
|
95
|
+
"31dd2597df303d22a2cabf73c40bb05afaf4ca1394e22935b97f627d4968c87d",
|
|
96
|
+
"382e3a1fcc7988cd05bfa68db7cc50189e785c05be212d27b524f0cc983fc77a",
|
|
97
|
+
"39bc3b42e6486ae8ace820df93b00dce4858338e8a428d14d8e71130e852bab1",
|
|
98
|
+
"419a52eb62bdc0bf9eff80039329435c55a1943b1fa12f4d0cbdc45b5f856c5b",
|
|
99
|
+
"41c31b175084a85232b6ea5f8eb474491b6c963302c69b46fa2ed60afb888b62",
|
|
100
|
+
"42718d7e5732aa1feb0a7f0ff7e0404fd080528bd4694b40b31ef0b146eda8e1",
|
|
101
|
+
"4bedd0fbbbebe0c0f66b34c3f6be972ce38357ce3451510e1dcf5025f7011dba",
|
|
102
|
+
"522acdc8a71a042b407851658eb1da85fe09c78b222b2233faef7da3385a757b",
|
|
103
|
+
"5a3925d0c67b0452db066d97d0452af012e7bd2fdf8e6ab4ab0392df8906a6e1",
|
|
104
|
+
"5deec7746acf1c742572b8bf8599f2f61a38c9925015d77254d87d3781169b3f",
|
|
105
|
+
"5f51d97b67276e90cda022ad363eca61dbe855dbb5342e358469006d4b5254df",
|
|
106
|
+
"5fd40b5ced3f8b458024ea434f2dfee7aa62a65663089bde26c41302f6c31b2e",
|
|
107
|
+
"6891b6d9d25103c31411b50f83f9a8aba63f4cbcc63b009f461c115bfaf7b78d",
|
|
108
|
+
"6bde86fb307fe1698fbbfeaa96130d4825f265afbeff217b959c1905b86f924d",
|
|
109
|
+
"6d899f361effad9a23d90940b6b55683bc87ed2d457ef64a7fa76fee7c3b9dfc",
|
|
110
|
+
"6ff02f23b7d95de68f42d5ebe91374540d3d31851d83d9cd37e6e71a5dbd0bcd",
|
|
111
|
+
"710183a2e29c72050c3a447f9f566de27c6efea9da40bf7b800381ac57026204",
|
|
112
|
+
"78f92c5c9c9177b247b0f72f03412bc829185786525a8cf8742460066762a7d1",
|
|
113
|
+
"7d2b484e8ced7c3292e811d28087814467aecd3ef19badb64ed45a0f5fd78bf8",
|
|
114
|
+
"804041b79916b0e8021a1130650d724741eff1e81ccec8133abf357b4d284a24",
|
|
115
|
+
"9199be795608cbd3e6cc39b21c19e6043c44bc15d5a1d28f1df379830c553dd5",
|
|
116
|
+
"9353240f6e58d4a988f3ca842185f5349594153dcddd05e30f83c7d8badfbe0e",
|
|
117
|
+
"9a7b232d55ab7ba22be48487c5f0adb7a6941fd54b436bdbbb72df4e5a740fb2",
|
|
118
|
+
"9daff4d6257969b02678943d62bfd83b971004f6efef68d5b767ac69c2222751",
|
|
119
|
+
"a09aa2ba7927e9b11bd5bddb6d33cec274235d6f54f1ab777ed71c932cfc8d72",
|
|
120
|
+
"a565d8446b59d26dcf75b08d3ccd4e85b750edba9e53a396cb7a4652d7cbc9e8",
|
|
121
|
+
"a63be4f745b778654e3c438d1b0e31bcf5ce265151c6982d5c6d5d286bae84c0",
|
|
122
|
+
"a7cdba018e4decf3837793c1e18dbe3dd71709adef54892ab83d81c00e866dc3",
|
|
123
|
+
"aa7af0d2d1194b65b8c4d0056c5607de6c38fb6a295f04087d17e1c9d2d11fba",
|
|
124
|
+
"b26fbeb64c3ec29d799c89709f9500bd3bfa452ae22bdac3e11c3bb15fb057dc",
|
|
125
|
+
"bb88457e8357a8709ab04f542c07361a816793f012a1c9818a4edd86d02cde4d",
|
|
126
|
+
"bf9388216da2069ca0dbad58479bb83e4b979ed35c4a80d247399ac93361417c",
|
|
127
|
+
"bf96efb4530605813b30d664f5d3b510540d89434a8e89dd7c62fb2d4fa4278f",
|
|
128
|
+
"c2154bd84cf20148d9a59e3ade04f0f754462b96cfac91d54d76ef33af7946e5",
|
|
129
|
+
"c3a8420317a3b3910a08b77a952ef8f8051da61622c6a2e03fc51b75761c6acf",
|
|
130
|
+
"c3ac86af1a7ac65fe3461d831e8bc9fa62bc247ef1b73d58e9dd4ed406be4bfd",
|
|
131
|
+
"ced3499d480a979b956536b3f71a4736451bf3a976e4e400fc5c4b8dd3f43b23",
|
|
132
|
+
"d01495f37407899a699726710e26d6105654273a12afc8fe87784743b4802844",
|
|
133
|
+
"d4de096987b9f7c346879e164637de91a66067378b1ee4b49f07d1bac0e2847a",
|
|
134
|
+
"da101085aa9f74817e48fc96dda859528fc52fabcf81e27c3640d1df17dd6dcb",
|
|
135
|
+
"df35063b88af16c08bb8960aac9882cce620aea478dfec5a67cff397b575b97d",
|
|
136
|
+
"e0972d8de5a0d855d76624f559a6ce5dd068fb4bbfa01e1d7cf929e6800dc4f0",
|
|
137
|
+
"e09cc11a367cbb147bacec0a41d748d22245e322827911d9c82b6066a8ba2059",
|
|
138
|
+
"e42c0e37eaed1ff03c24008561bca218eae8ec5ca4405a37897c6245ead8d612",
|
|
139
|
+
"e4332b7178062649e29d2770905f20e6a4b2dfc54581dcfcd919aeaed26291f4",
|
|
140
|
+
"e8f1addbaec62c9e2bf5b3ae4b32a20c793c06de7d57471f6509a127f1c902f4",
|
|
141
|
+
"eb4cd3f0ad6ebcf2baeb94f93d87138044976b57b7113b6321ac3c5cf70a8130",
|
|
142
|
+
"ec6773395189417c92102b34c77ed299f6111fbbc37d50d4fa12ab819f763669",
|
|
143
|
+
"ed65d1b32a7f9684ab682296ac7cac1dd972bb8d86c9336753bc915efc3515f4",
|
|
144
|
+
"ef2dcdad18f7e6b0241dafbaad3033ca5c12e07755418ece4c3a90e9665e434e",
|
|
145
|
+
"f09cb4e7744522d71048a8998ff841c7af942a61ffbd4142a140b42d89b950fe",
|
|
146
|
+
"f31dea98f8c5c6c60e8e049388f24eec14088518e2ded0f892d96c785401e688",
|
|
147
|
+
"f719b1b6498b3562843be83add8714c8967da95bb9aa626aae157a8ca31e4742",
|
|
148
|
+
"fc134798cd646a15326004bbeff4c2719e000a9ac52f6b893a767f7c5276e24b",
|
|
149
|
+
"fc9b9922899a3ca6193fd1d96920329c10acb72d3fad0dbc87b1ecdd8a791c14",
|
|
150
|
+
"fe26e72b87ca280e538f4f78d1a956df0ae6ed51aab73ccc4c1dcf6f25256438"
|
|
151
|
+
],
|
|
152
|
+
"requiresDist": []
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "six",
|
|
156
|
+
"version": "1.17.0",
|
|
157
|
+
"metadataUrl": "https://pypi.org/pypi/six/1.17.0/json",
|
|
158
|
+
"metadataSha256": "d8de39dd52b73048d81a8fd78022ee2bc72f8b568bcf0d88e5d5069c302b1208",
|
|
159
|
+
"wheelHashes": [
|
|
160
|
+
"4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"
|
|
161
|
+
],
|
|
162
|
+
"requiresDist": []
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"name": "asgiref",
|
|
166
|
+
"version": "3.13.0",
|
|
167
|
+
"metadataUrl": "https://pypi.org/pypi/asgiref/3.13.0/json",
|
|
168
|
+
"metadataSha256": "5ceb6219f17f4c675ebcb3efa3fe4849351cc9f3d29d9b61f69a57a579dd6b4c",
|
|
169
|
+
"wheelHashes": [
|
|
170
|
+
"f9596a2434512686473d50f96ff6207fbba49ae1a785dfac614df4aeb085674d"
|
|
171
|
+
],
|
|
172
|
+
"requiresDist": [
|
|
173
|
+
"packaging; extra == \"tests\"",
|
|
174
|
+
"pytest; extra == \"tests\"",
|
|
175
|
+
"pytest-asyncio; extra == \"tests\"",
|
|
176
|
+
"mypy>=1.14.0; extra == \"mypy\""
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "attrs",
|
|
181
|
+
"version": "26.1.0",
|
|
182
|
+
"metadataUrl": "https://pypi.org/pypi/attrs/26.1.0/json",
|
|
183
|
+
"metadataSha256": "a882bf941fb4a0bb748d0194df544121cc130f5fb15a710ab6b804c17d2899b7",
|
|
184
|
+
"wheelHashes": [
|
|
185
|
+
"c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309"
|
|
186
|
+
],
|
|
187
|
+
"requiresDist": []
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "croniter",
|
|
191
|
+
"version": "7.0.0",
|
|
192
|
+
"metadataUrl": "https://pypi.org/pypi/croniter/7.0.0/json",
|
|
193
|
+
"metadataSha256": "f47e685ef0191726c73c9be7ae9b64fb395522f56b89fbdc1600a875bf4e0496",
|
|
194
|
+
"wheelHashes": [
|
|
195
|
+
"92090bce3cef195a037a46b78430c4cdd6250e90671d9d7dcd9e486147daaca4"
|
|
196
|
+
],
|
|
197
|
+
"requiresDist": [
|
|
198
|
+
"python-dateutil"
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "packaging",
|
|
203
|
+
"version": "26.3",
|
|
204
|
+
"metadataUrl": "https://pypi.org/pypi/packaging/26.3/json",
|
|
205
|
+
"metadataSha256": "4f190d2f0b312b3086058cee64ab4333bf3ce67fb78b4c2bdb43899049b29f4d",
|
|
206
|
+
"wheelHashes": [
|
|
207
|
+
"d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c"
|
|
208
|
+
],
|
|
209
|
+
"requiresDist": []
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "psycopg-pool",
|
|
213
|
+
"version": "3.3.3",
|
|
214
|
+
"metadataUrl": "https://pypi.org/pypi/psycopg-pool/3.3.3/json",
|
|
215
|
+
"metadataSha256": "b4d1d00413587c2f8c439d424eea1d53d0e2d29feb4620fd908148de3a1e199a",
|
|
216
|
+
"wheelHashes": [
|
|
217
|
+
"9b9cd6a4fcec47a410f7e82d408540e7f77b478509e91b44c1a5457a13e5ff37"
|
|
218
|
+
],
|
|
219
|
+
"requiresDist": [
|
|
220
|
+
"typing-extensions>=4.6",
|
|
221
|
+
"anyio>=4.0; extra == \"test\"",
|
|
222
|
+
"mypy>=2.1.0; extra == \"test\"",
|
|
223
|
+
"pproxy>=2.7; extra == \"test\"",
|
|
224
|
+
"pytest>=6.2.5; extra == \"test\"",
|
|
225
|
+
"pytest-cov>=3.0; extra == \"test\"",
|
|
226
|
+
"pytest-randomly>=3.5; extra == \"test\""
|
|
227
|
+
]
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"name": "typing_extensions",
|
|
231
|
+
"version": "4.16.0",
|
|
232
|
+
"metadataUrl": "https://pypi.org/pypi/typing_extensions/4.16.0/json",
|
|
233
|
+
"metadataSha256": "2140da00d62dde967f52d0be0ae28444f1d6a3fe603f52c83c23988c32122d5a",
|
|
234
|
+
"wheelHashes": [
|
|
235
|
+
"481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8"
|
|
236
|
+
],
|
|
237
|
+
"requiresDist": []
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
"review": {
|
|
241
|
+
"dependency": "procrastinate",
|
|
242
|
+
"version": "3.10.0",
|
|
243
|
+
"sourceCommit": "8b6398329d915b7299c0d936e567facaebea8903",
|
|
244
|
+
"license": "MIT",
|
|
245
|
+
"scope": "Candidate portable durable job primitive; no full provider/project support claim before qualification."
|
|
246
|
+
}
|
|
247
|
+
}
|