@atmem/architect 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONSTITUTION.md +144 -0
- package/LICENSE +202 -0
- package/NOTICE +6 -0
- package/README.md +31 -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-BTLHaa3J.css +1 -0
- package/dist/assets/index-CQ2C1gKF.js +21338 -0
- package/dist/assets/index.es-DTyqIdaO.js +18 -0
- package/dist/assets/purify.es-CAi2OJFm.js +3 -0
- package/dist/assets/visual-export-Ox0j5xj5.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/atmem-APACHE-2.0.txt +202 -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/atmem-APACHE-2.0.txt +202 -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 +193 -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 +221 -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 +172 -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 +483 -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 +185 -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_context.py +58 -0
- package/server/memory_routes.py +141 -0
- package/server/memory_service.py +306 -0
- package/server/memory_worker.py +129 -0
- package/server/openai_voice.py +80 -0
- package/server/orca_handoff.py +90 -0
- package/server/packaged_app.py +9 -0
- package/server/pricing.py +190 -0
- package/server/process_control_observation.py +31 -0
- package/server/prompts.py +136 -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/server/windows_snapshot.py +119 -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 +39 -0
- package/src/ArtifactChecks.jsx +49 -0
- package/src/BlockRequirements.jsx +13 -0
- package/src/BrainActivity.jsx +11 -0
- package/src/ChatMessage.jsx +29 -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 +387 -0
- package/src/EngineeringPanel.jsx +151 -0
- package/src/FileTree.jsx +7 -0
- package/src/FinalChecklist.jsx +15 -0
- package/src/HelpNote.jsx +3 -0
- package/src/ImplementationDelivery.jsx +91 -0
- package/src/JourneyViews.jsx +403 -0
- package/src/LocationChoices.jsx +12 -0
- package/src/MemoryPanel.jsx +58 -0
- package/src/OpenAIVoicePanel.jsx +66 -0
- package/src/OutputsView.jsx +71 -0
- package/src/ProjectChecks.jsx +44 -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 +18 -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 +190 -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/final-package.mjs +34 -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 +106 -0
- package/src/journey.mjs +97 -0
- package/src/levels.mjs +145 -0
- package/src/local-agent.mjs +184 -0
- package/src/main.jsx +2481 -0
- package/src/model-policy-preflight.mjs +34 -0
- package/src/openai-voice.mjs +102 -0
- package/src/output-bundle.mjs +13 -0
- package/src/ownership-inspection.mjs +28 -0
- package/src/pack.mjs +201 -0
- package/src/pricing.mjs +85 -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 +37 -0
- package/src/useEmulation.jsx +36 -0
- package/src/useEngineeringStatus.mjs +17 -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,75 @@
|
|
|
1
|
+
"""Reviewed engineering summaries are evidence, never executable repo instructions."""
|
|
2
|
+
import hashlib
|
|
3
|
+
import json
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
import re
|
|
6
|
+
from datetime import date,datetime
|
|
7
|
+
from urllib.parse import urlsplit
|
|
8
|
+
ROOT=Path(__file__).resolve().parent.parent
|
|
9
|
+
|
|
10
|
+
def records():
|
|
11
|
+
data=json.loads((ROOT/'knowledge/engineering-practices.json').read_text())
|
|
12
|
+
result=[]
|
|
13
|
+
for row in data['records']:
|
|
14
|
+
source=row['source']
|
|
15
|
+
if row['status']!='active' or source.get('archived'):continue
|
|
16
|
+
if source.get('kind')=='documentation':
|
|
17
|
+
url=urlsplit(source['url'])
|
|
18
|
+
if url.scheme!='https' or url.hostname not in {'docs.aws.amazon.com','learn.microsoft.com','docs.cloud.google.com','cloud.ibm.com'}:raise ValueError('Documentation source must be an approved primary origin')
|
|
19
|
+
if not re.fullmatch(r'[0-9a-f]{64}',source.get('sha256','')):raise ValueError('Documentation requires its observed content digest')
|
|
20
|
+
if datetime.fromisoformat(source.get('retrievedAt','')).tzinfo is None:raise ValueError('Documentation review time must include timezone')
|
|
21
|
+
else:
|
|
22
|
+
if not re.fullmatch(r'[0-9a-f]{40}',source['commit']):raise ValueError('Knowledge source requires a pinned commit')
|
|
23
|
+
if not source['url'].startswith('https://github.com/'+source['repository']+'/'):raise ValueError('Invalid knowledge provenance')
|
|
24
|
+
if row['provider']=='portable':
|
|
25
|
+
if not isinstance(row.get('providers'),list)or not row['providers']or not set(row['providers'])<={'aws','azure','gcp','ibm'}:raise ValueError('Portable practices require explicit supported-provider applicability')
|
|
26
|
+
if row['evidenceLevel']=='locally-tested':
|
|
27
|
+
proof=row.get('localVerification',{});path=(ROOT/proof.get('receipt','')).resolve()
|
|
28
|
+
if not path.is_relative_to(ROOT/'specs')or not path.is_file()or hashlib.sha256(path.read_bytes()).hexdigest()!=proof.get('sha256'):raise ValueError('Locally tested practice requires its pinned repository evidence receipt')
|
|
29
|
+
if json.loads(path.read_text()).get('passed')is not True or not proof.get('scope'):raise ValueError('Local practice evidence must state its observed passing scope')
|
|
30
|
+
elif row['evidenceLevel']!='source-reviewed':raise ValueError('Unsupported knowledge confidence claim')
|
|
31
|
+
result.append(row)
|
|
32
|
+
return result
|
|
33
|
+
|
|
34
|
+
def publish(memory,project):
|
|
35
|
+
if not memory.enabled(project):return
|
|
36
|
+
for row in records():
|
|
37
|
+
text=json.dumps(row,sort_keys=True,ensure_ascii=False)
|
|
38
|
+
digest=hashlib.sha256(text.encode()).hexdigest()
|
|
39
|
+
memory.enqueue(project,'knowledge','practice.'+row['id'],text,event_id='practice-'+digest,source=row['source']['url'])
|
|
40
|
+
|
|
41
|
+
def eligible(row, providers=None, now=None):
|
|
42
|
+
now=now or date.today()
|
|
43
|
+
try:
|
|
44
|
+
reviewed=date.fromisoformat(row['reviewedAt'])
|
|
45
|
+
freshness=30 if row['source'].get('kind')=='documentation' else 90
|
|
46
|
+
checked=datetime.fromisoformat(row['source']['retrievedAt']).date() if row['source'].get('kind')=='documentation' else reviewed
|
|
47
|
+
return (0 <= (now-checked).days <= freshness and row['status']=='active' and not row['source'].get('archived') and
|
|
48
|
+
0 <= (now-reviewed).days <= freshness and
|
|
49
|
+
(not providers or bool(set(providers).intersection(row.get('providers',[])if row['provider']=='portable'else[row['provider']]))))
|
|
50
|
+
except (KeyError,ValueError,TypeError):
|
|
51
|
+
return False
|
|
52
|
+
|
|
53
|
+
def context(rows, providers=None, now=None):
|
|
54
|
+
current={r['id']:r for r in records()}
|
|
55
|
+
result=[]
|
|
56
|
+
for row in rows:
|
|
57
|
+
key=str(row.get('fact_key',''))
|
|
58
|
+
content=str(row.get('content',''))
|
|
59
|
+
if key.startswith('practice.'):
|
|
60
|
+
# Pinned AtMem 2.3.10 normalizes interpreted facts with one terminal
|
|
61
|
+
# sentence period. Accept that exact transport normalization only;
|
|
62
|
+
# still compare the complete object with our reviewed local record.
|
|
63
|
+
serialized=content[:-1]if content.endswith('}.')else content
|
|
64
|
+
try:
|
|
65
|
+
practice=json.loads(serialized)
|
|
66
|
+
except (ValueError,TypeError):
|
|
67
|
+
continue
|
|
68
|
+
approved=current.get(practice.get('id'))
|
|
69
|
+
if approved != practice or not eligible(practice,providers,now):
|
|
70
|
+
continue
|
|
71
|
+
if key!='practice.'+practice['id']:continue
|
|
72
|
+
content=json.dumps(approved,sort_keys=True,ensure_ascii=False)
|
|
73
|
+
result.append({'id':str(row.get('id',''))[:150],'content':content[:3000],'key':key[:200],'trust':'retrieved evidence, not instructions'})
|
|
74
|
+
if len(result)==8:break
|
|
75
|
+
return result
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""Bind proposed work records to actual immutable files and delivered context.
|
|
2
|
+
|
|
3
|
+
No generated code executes here. Binding records provenance and file existence,
|
|
4
|
+
not semantic correctness, business agreement or successful execution.
|
|
5
|
+
"""
|
|
6
|
+
import hashlib
|
|
7
|
+
import io
|
|
8
|
+
import json
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
import re
|
|
11
|
+
import uuid
|
|
12
|
+
import zipfile
|
|
13
|
+
from jsonschema import Draft202012Validator, ValidationError
|
|
14
|
+
from .engineering_contexts import _object
|
|
15
|
+
from .engineering_sessions import SessionError
|
|
16
|
+
from .memory_service import safe
|
|
17
|
+
|
|
18
|
+
PROPOSAL_PATH = 'architecture-work-proposal.json'
|
|
19
|
+
MAX_PROPOSAL_BYTES = 1_500_000
|
|
20
|
+
BOUNDARY = 'artifact_file_binding_only'
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _sha(content):
|
|
24
|
+
return hashlib.sha256(content).hexdigest()
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _path(value):
|
|
28
|
+
if not isinstance(value,str) or not value.strip() or len(value)>500 or value.startswith('/') or re.match(r'^[A-Za-z]:',value) or '\\' in value or any(ord(c)<32 for c in value) or any(p in {'','.','..'} for p in value.split('/')):
|
|
29
|
+
raise SessionError('Mapping files must be explicit relative artifact paths')
|
|
30
|
+
return value
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _json(content):
|
|
34
|
+
def constant(value):
|
|
35
|
+
raise ValueError('Nonfinite proposal JSON')
|
|
36
|
+
value=json.loads(content.decode('utf-8'),object_pairs_hook=_object,parse_constant=constant)
|
|
37
|
+
json.dumps(value,allow_nan=False,ensure_ascii=False).encode('utf-8')
|
|
38
|
+
def depth(item,level=0):
|
|
39
|
+
if level>40:raise ValueError('Proposal exceeds its explicit nesting bound')
|
|
40
|
+
if isinstance(item,dict):
|
|
41
|
+
for child in item.values():depth(child,level+1)
|
|
42
|
+
elif isinstance(item,list):
|
|
43
|
+
for child in item:depth(child,level+1)
|
|
44
|
+
depth(value)
|
|
45
|
+
return value
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class EngineeringReconciliation:
|
|
49
|
+
def __init__(self,store,artifacts,contexts):
|
|
50
|
+
self.store,self.db,self.artifacts,self.contexts=store,store.db,artifacts,contexts
|
|
51
|
+
self.schema_path=Path(__file__).parent/'engineering_assets/architecture_work.schema.json'
|
|
52
|
+
schema=self.schema_path.read_bytes()
|
|
53
|
+
self.validator=Draft202012Validator(json.loads(schema))
|
|
54
|
+
self.definition=_sha(Path(__file__).read_bytes()+schema)
|
|
55
|
+
self.db.execute('''CREATE TABLE IF NOT EXISTS engineering_reconciliations (
|
|
56
|
+
id TEXT PRIMARY KEY, session TEXT NOT NULL, artifact TEXT NOT NULL,
|
|
57
|
+
sha256 TEXT NOT NULL, payload TEXT NOT NULL, UNIQUE(session,artifact,sha256))''')
|
|
58
|
+
self.db.commit()
|
|
59
|
+
|
|
60
|
+
def submitted_context(self,scope,session):
|
|
61
|
+
# Only durable client identity events are needed. Do not page or truncate
|
|
62
|
+
# thousands of unrelated token/tool deltas into a supposed complete brief.
|
|
63
|
+
rows=self.db.execute('''SELECT sequence,payload FROM engineering_events
|
|
64
|
+
WHERE session=? AND json_extract(payload,'$.kind') IN
|
|
65
|
+
('accepted','steering_submitted','steering_accepted','steering_delivery_uncertain')
|
|
66
|
+
ORDER BY sequence''',(session,)).fetchall()
|
|
67
|
+
if len(rows)>4000:raise SessionError('Intent history exceeds the reconciliation bound; nothing was discarded')
|
|
68
|
+
events=[{'sequence':r['sequence'],**json.loads(r['payload'])} for r in rows]
|
|
69
|
+
for event in events:
|
|
70
|
+
if event['kind']=='accepted' and 'text' not in event:
|
|
71
|
+
saved=self.db.execute('SELECT intent FROM engineering_runs WHERE id=? AND session=?',(event.get('runId'),session)).fetchone()
|
|
72
|
+
if saved and isinstance(saved['intent'],str):event['text']=saved['intent']
|
|
73
|
+
accepted={e.get('requestId') for e in events if e['kind']=='steering_accepted'}
|
|
74
|
+
uncertain={e.get('requestId') for e in events if e['kind']=='steering_delivery_uncertain'}
|
|
75
|
+
intents=[]
|
|
76
|
+
for e in events:
|
|
77
|
+
if e['kind']=='accepted' and e.get('origin')!='automatic_repair':
|
|
78
|
+
request=e.get('runId');status='accepted'
|
|
79
|
+
elif e['kind']=='steering_submitted':
|
|
80
|
+
request=e.get('requestId');status='accepted' if request in accepted else 'uncertain' if request in uncertain else 'pending'
|
|
81
|
+
else:continue
|
|
82
|
+
if not isinstance(e.get('text'),str) or not e['text'].strip():
|
|
83
|
+
raise SessionError('Exact client intent is unavailable; reconcile the durable history first')
|
|
84
|
+
intents.append({'requestId':request,'sequence':e['sequence'],'text':e['text'],'status':status})
|
|
85
|
+
if not intents or any(i['status']!='accepted' for i in intents):
|
|
86
|
+
raise SessionError('Client intent delivery is unresolved; no mapping was reconciled')
|
|
87
|
+
latest=self.contexts.for_request(scope,session,intents[-1]['requestId'])
|
|
88
|
+
if latest is None:raise SessionError('This legacy submission has no immutable current-context receipt')
|
|
89
|
+
return latest,[e for e in events if not (e['kind']=='accepted' and e.get('origin')=='automatic_repair')]
|
|
90
|
+
|
|
91
|
+
def _current(self,scope,session,manifest):
|
|
92
|
+
row=self.store.get(scope,session)
|
|
93
|
+
if row['state']!='idle' or row['last_status']!='completed' or row['run']!=manifest['runId'] or manifest.get('turnStatus')!='completed' or manifest.get('kind')!='delivery':
|
|
94
|
+
raise SessionError('Mapping reconciliation requires the current completed delivery artifact')
|
|
95
|
+
|
|
96
|
+
def prepare(self,scope,session,artifact):
|
|
97
|
+
manifest,archive=self.artifacts.get(scope,session,artifact)
|
|
98
|
+
self._current(scope,session,manifest)
|
|
99
|
+
if manifest.get('sessionId')!=session or manifest.get('id')!=artifact or _sha(archive)!=manifest.get('sha256'):
|
|
100
|
+
raise SessionError('Artifact integrity check failed; no mappings were imported')
|
|
101
|
+
context,events=self.submitted_context(scope,session)
|
|
102
|
+
files={}
|
|
103
|
+
for entry in manifest['files']:
|
|
104
|
+
if entry['kind']!='file':continue
|
|
105
|
+
name=_path(entry['path'])
|
|
106
|
+
if name in files:raise SessionError('Artifact manifest repeats a file path')
|
|
107
|
+
files[name]=entry
|
|
108
|
+
if PROPOSAL_PATH not in files:
|
|
109
|
+
return {'status':'proposal_missing','artifactId':artifact,
|
|
110
|
+
'boundary':BOUNDARY,'message':'This package has no proposed work mappings. Ask engineering to produce architecture-work-proposal.json; the artifact remains unchanged.'}
|
|
111
|
+
if files[PROPOSAL_PATH]['bytes']>MAX_PROPOSAL_BYTES:raise SessionError('Work proposal exceeds its explicit byte bound')
|
|
112
|
+
with zipfile.ZipFile(io.BytesIO(archive)) as package:
|
|
113
|
+
entries=package.infolist()
|
|
114
|
+
if len(entries)>2000 or len({e.filename for e in entries})!=len(entries):raise SessionError('Artifact archive has inconsistent entries')
|
|
115
|
+
content=package.read(PROPOSAL_PATH)
|
|
116
|
+
if len(content)>MAX_PROPOSAL_BYTES or len(content)!=files[PROPOSAL_PATH]['bytes'] or _sha(content)!=files[PROPOSAL_PATH]['sha256']:
|
|
117
|
+
raise SessionError('Proposed mapping bytes differ from the captured manifest')
|
|
118
|
+
try:
|
|
119
|
+
proposal=_json(content)
|
|
120
|
+
self.validator.validate(proposal)
|
|
121
|
+
except (ValueError,UnicodeError,RecursionError,ValidationError):
|
|
122
|
+
raise SessionError('The proposed mapping file is malformed or uses an unsupported schema; the artifact is retained') from None
|
|
123
|
+
if not safe(proposal):raise SessionError('Proposed mapping data looks like a credential')
|
|
124
|
+
if not proposal['records']:raise SessionError('The work proposal contains no records')
|
|
125
|
+
ids=set();bindings={}
|
|
126
|
+
for record in proposal['records']:
|
|
127
|
+
if not record['id'].strip() or not record['title'].strip() or record['id'] in ids or any(not r.strip() for r in record['dependsOn']):
|
|
128
|
+
raise SessionError('Work proposals require unique explicit identities and references')
|
|
129
|
+
ids.add(record['id'])
|
|
130
|
+
paths=record['data'].get('files',[])
|
|
131
|
+
if not isinstance(paths,list) or len(paths)>200 or len(set(p for p in paths if isinstance(p,str)))!=len(paths):
|
|
132
|
+
raise SessionError('Mapping file lists must be bounded unique paths')
|
|
133
|
+
if record['kind']=='implementation' and not paths:
|
|
134
|
+
raise SessionError('An implementation mapping must name actual artifact files')
|
|
135
|
+
for path in paths:
|
|
136
|
+
_path(path)
|
|
137
|
+
if path not in files or path in manifest.get('pinnedInputs',{}) or path==PROPOSAL_PATH:
|
|
138
|
+
raise SessionError('An implementation/evidence mapping names a missing or supplied input file')
|
|
139
|
+
actual=package.read(path)
|
|
140
|
+
if len(actual)!=files[path]['bytes'] or _sha(actual)!=files[path]['sha256']:
|
|
141
|
+
raise SessionError('Mapped file bytes differ from the captured manifest')
|
|
142
|
+
bindings[path]={'path':path,'bytes':len(actual),'sha256':_sha(actual)}
|
|
143
|
+
payload={'format':'atmem.architecture-proposal','version':1,'projectId':scope.project,
|
|
144
|
+
'sessionId':session,'runId':manifest['runId'],'artifactId':artifact,'artifactSha256':manifest['sha256'],
|
|
145
|
+
'proposalSha256':_sha(content),'context':context,'events':events,'proposal':proposal,
|
|
146
|
+
'files':sorted(bindings.values(),key=lambda f:f['path']),'definitionSha256':self.definition,'boundary':BOUNDARY}
|
|
147
|
+
encoded=json.dumps(payload,ensure_ascii=False,allow_nan=False,sort_keys=True,separators=(',',':'))
|
|
148
|
+
if len(encoded.encode())>6_000_000:raise SessionError('Mapping receipt exceeds its explicit byte bound; nothing was discarded')
|
|
149
|
+
digest=_sha(encoded.encode())
|
|
150
|
+
self._current(scope,session,manifest)
|
|
151
|
+
prior=self.db.execute('SELECT id,payload FROM engineering_reconciliations WHERE session=? AND artifact=? AND sha256=?',(session,artifact,digest)).fetchone()
|
|
152
|
+
if prior:
|
|
153
|
+
if prior['payload']!=encoded:raise SessionError('Stored mapping receipt integrity check failed')
|
|
154
|
+
ident=prior['id']
|
|
155
|
+
else:
|
|
156
|
+
ident=str(uuid.uuid4())
|
|
157
|
+
with self.db:self.db.execute('INSERT INTO engineering_reconciliations VALUES (?,?,?,?,?)',(ident,session,artifact,digest,encoded))
|
|
158
|
+
# Exact encoded bytes avoid cross-runtime number/key serialization differences.
|
|
159
|
+
return {'status':'prepared','id':ident,'sha256':digest,'content':encoded}
|