@ngockhoale/ukit 1.1.6
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/CHANGELOG.md +179 -0
- package/LICENSE +21 -0
- package/README.md +189 -0
- package/bin/ukit +30 -0
- package/manifests/platform.full.yaml +1194 -0
- package/package.json +71 -0
- package/scripts/bug/triage.mjs +37 -0
- package/scripts/index/build-index.mjs +35 -0
- package/scripts/index/query-index.mjs +92 -0
- package/scripts/index/refresh-index.mjs +85 -0
- package/scripts/release/verify-release.mjs +56 -0
- package/src/bug/triageBug.js +123 -0
- package/src/cli/adapters.js +148 -0
- package/src/cli/commands/diff.js +51 -0
- package/src/cli/commands/doctor.js +125 -0
- package/src/cli/commands/indexArgs.js +73 -0
- package/src/cli/commands/indexTools.js +509 -0
- package/src/cli/commands/install.js +293 -0
- package/src/cli/commands/memory.js +126 -0
- package/src/cli/commands/status.js +8 -0
- package/src/cli/commands/uninstall.js +51 -0
- package/src/cli/index.js +109 -0
- package/src/context/detectProjectContext.js +49 -0
- package/src/context/detectProviders.js +12 -0
- package/src/core/applyPlan.js +89 -0
- package/src/core/buildPlan.js +228 -0
- package/src/core/compact/index.js +294 -0
- package/src/core/compact/threshold.js +936 -0
- package/src/core/diffPlan.js +73 -0
- package/src/core/ensureGitignore.js +117 -0
- package/src/core/fileOps.js +188 -0
- package/src/core/memory/hygiene.js +160 -0
- package/src/core/memory/index.js +2 -0
- package/src/core/memory/retrieval.js +476 -0
- package/src/core/memory/store.js +202 -0
- package/src/core/metadata.js +132 -0
- package/src/core/migrateLegacy.js +139 -0
- package/src/core/output/index.js +1309 -0
- package/src/core/paths.js +13 -0
- package/src/core/report.js +17 -0
- package/src/core/router/advisor.js +42 -0
- package/src/core/router/index.js +2 -0
- package/src/core/router/router.js +164 -0
- package/src/core/runInstallPipeline.js +365 -0
- package/src/core/runtimeConfig.js +190 -0
- package/src/core/runtimePaths.js +24 -0
- package/src/core/status.js +186 -0
- package/src/core/token/index.js +328 -0
- package/src/core/uninstall.js +246 -0
- package/src/core/validation/confidence.js +89 -0
- package/src/core/validation/index.js +2 -0
- package/src/core/validation/validator.js +165 -0
- package/src/index/buildIndex.js +1392 -0
- package/src/index/gitHooks.js +109 -0
- package/src/index/importResolution.js +377 -0
- package/src/index/languageTools.js +127 -0
- package/src/index/paths.js +27 -0
- package/src/index/queryIndex.js +637 -0
- package/src/index/relatedTests.js +237 -0
- package/src/index/resolveContext.js +345 -0
- package/src/index/routeCatalog.js +258 -0
- package/src/index/taskRouting.js +677 -0
- package/src/index/verificationPlan.js +437 -0
- package/src/manifest/loadManifest.js +22 -0
- package/src/manifest/selectItems.js +78 -0
- package/src/manifest/validateManifest.js +115 -0
- package/src/render/buildVariables.js +39 -0
- package/src/render/renderTemplate.js +44 -0
- package/src/stack/detectStack.js +213 -0
- package/templates/.claude/agents/bug-debugger.md +57 -0
- package/templates/.claude/agents/feature-implementer.md +55 -0
- package/templates/.claude/config/providers.md +25 -0
- package/templates/.claude/hooks/auto-allow-bash.sh +155 -0
- package/templates/.claude/hooks/auto-prune-bash.sh +75 -0
- package/templates/.claude/hooks/block-dangerous.sh +54 -0
- package/templates/.claude/hooks/compress-output.sh +17 -0
- package/templates/.claude/hooks/protect-files.sh +37 -0
- package/templates/.claude/hooks/reinject-context.sh +28 -0
- package/templates/.claude/hooks/session-start.md +13 -0
- package/templates/.claude/hooks/skill-router.sh +1681 -0
- package/templates/.claude/hooks/verification-guard.sh +271 -0
- package/templates/.claude/settings.json +144 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/mce/mc.xsd +75 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/templates/.claude/skills/_shared/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/templates/.claude/skills/_shared/ooxml/scripts/pack.py +159 -0
- package/templates/.claude/skills/_shared/ooxml/scripts/unpack.py +29 -0
- package/templates/.claude/skills/_shared/ooxml/scripts/validate.py +69 -0
- package/templates/.claude/skills/_shared/ooxml/scripts/validation/__init__.py +15 -0
- package/templates/.claude/skills/_shared/ooxml/scripts/validation/base.py +951 -0
- package/templates/.claude/skills/_shared/ooxml/scripts/validation/docx.py +274 -0
- package/templates/.claude/skills/_shared/ooxml/scripts/validation/pptx.py +315 -0
- package/templates/.claude/skills/_shared/ooxml/scripts/validation/redlining.py +279 -0
- package/templates/.claude/skills/backend-api/SKILL.md +26 -0
- package/templates/.claude/skills/canvas-design/LICENSE.txt +202 -0
- package/templates/.claude/skills/canvas-design/SKILL.md +130 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/templates/.claude/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/templates/.claude/skills/code-review/SKILL.md +97 -0
- package/templates/.claude/skills/debugging-toolkit/SKILL.md +156 -0
- package/templates/.claude/skills/delivery/SKILL.md +92 -0
- package/templates/.claude/skills/discover-security/SKILL.md +86 -0
- package/templates/.claude/skills/docker-packaging/SKILL.md +60 -0
- package/templates/.claude/skills/docs-manager/SKILL.md +465 -0
- package/templates/.claude/skills/docs-manager/init-project-docs.sh +70 -0
- package/templates/.claude/skills/docs-manager/templates/README.md.template +50 -0
- package/templates/.claude/skills/docs-manager/templates/agent-roles.md.template +24 -0
- package/templates/.claude/skills/docs-manager/templates/coding-conventions.md.template +28 -0
- package/templates/.claude/skills/docs-manager/templates/memory.md.template +30 -0
- package/templates/.claude/skills/docs-manager/templates/onboarding.md.template +20 -0
- package/templates/.claude/skills/docs-manager/templates/project.md.template +26 -0
- package/templates/.claude/skills/docs-quality/SKILL.md +148 -0
- package/templates/.claude/skills/docx/LICENSE.txt +30 -0
- package/templates/.claude/skills/docx/SKILL.md +197 -0
- package/templates/.claude/skills/docx/docx-js.md +350 -0
- package/templates/.claude/skills/docx/ooxml.md +610 -0
- package/templates/.claude/skills/docx/scripts/__init__.py +1 -0
- package/templates/.claude/skills/docx/scripts/document.py +1276 -0
- package/templates/.claude/skills/docx/scripts/templates/comments.xml +3 -0
- package/templates/.claude/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/templates/.claude/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/templates/.claude/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/templates/.claude/skills/docx/scripts/templates/people.xml +3 -0
- package/templates/.claude/skills/docx/scripts/utilities.py +374 -0
- package/templates/.claude/skills/duraone/SKILL.md +204 -0
- package/templates/.claude/skills/duraone/references/backend.md +636 -0
- package/templates/.claude/skills/duraone/references/frontend.md +1506 -0
- package/templates/.claude/skills/duraone/references/sql.md +631 -0
- package/templates/.claude/skills/duraone/references/workflow.md +520 -0
- package/templates/.claude/skills/executing-plans/SKILL.md +76 -0
- package/templates/.claude/skills/file-organizer/SKILL.md +433 -0
- package/templates/.claude/skills/frontend/SKILL.md +26 -0
- package/templates/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/templates/.claude/skills/frontend-design/SKILL.md +42 -0
- package/templates/.claude/skills/frontend-vue/SKILL.md +127 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Box.vue +137 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Button.vue +93 -0
- package/templates/.claude/skills/frontend-vue/components/Control/ButtonBar.vue +29 -0
- package/templates/.claude/skills/frontend-vue/components/Control/ButtonFloat.vue +62 -0
- package/templates/.claude/skills/frontend-vue/components/Control/CheckButton.vue +75 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Checkbox.vue +58 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Datetime.vue +148 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Dropdownlist.vue +156 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Input.vue +106 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Label.vue +38 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Master/BoxColumn.vue +24 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Popup/Confirm.vue +33 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Popup/Info.vue +32 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Popup/ModalInfo.vue +39 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Popup/Reject.vue +64 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Tag.vue +82 -0
- package/templates/.claude/skills/frontend-vue/components/Control/Upload.vue +61 -0
- package/templates/.claude/skills/frontend-vue/components/ControlMobile/Dropdownlist.vue +103 -0
- package/templates/.claude/skills/frontend-vue/components/ControlMobile/PagingBar.vue +108 -0
- package/templates/.claude/skills/frontend-vue/components/ControlMobile/UploadImage.vue +137 -0
- package/templates/.claude/skills/frontend-vue/components/Grid/AG.vue +806 -0
- package/templates/.claude/skills/frontend-vue/components/Grid/AntTable.vue +253 -0
- package/templates/.claude/skills/frontend-vue/components/Grid/CustomDropdownEditor.vue +43 -0
- package/templates/.claude/skills/frontend-vue/components/Grid/CustomDropdownEditorEnable.vue +55 -0
- package/templates/.claude/skills/frontend-vue/components/Grid/HtmlTable.vue +40 -0
- package/templates/.claude/skills/frontend-vue/components/PDFViewer.vue +25 -0
- package/templates/.claude/skills/frontend-vue/components/Panel/FormView.vue +309 -0
- package/templates/.claude/skills/frontend-vue/components/Partial/Footer.vue +23 -0
- package/templates/.claude/skills/frontend-vue/components/Partial/Header.vue +265 -0
- package/templates/.claude/skills/frontend-vue/components/Partial/Sidebar.vue +122 -0
- package/templates/.claude/skills/frontend-vue/components/Template.vue +16 -0
- package/templates/.claude/skills/frontend-vue/components/View/Form.vue +89 -0
- package/templates/.claude/skills/frontend-vue/composables/indexDBStore.js +140 -0
- package/templates/.claude/skills/frontend-vue/composables/masterApi.js +362 -0
- package/templates/.claude/skills/frontend-vue/composables/state.js +578 -0
- package/templates/.claude/skills/frontend-vue/composables/useRequest.js +221 -0
- package/templates/.claude/skills/frontend-vue/composables/useSession.js +179 -0
- package/templates/.claude/skills/frontend-vue/composables/useTranslation.js +54 -0
- package/templates/.claude/skills/frontend-vue/composables/useWebSocket.js +257 -0
- package/templates/.claude/skills/frontend-vue/composables/userObj.js +111 -0
- package/templates/.claude/skills/frontend-vue/composables/utils.js +322 -0
- package/templates/.claude/skills/frontend-vue/reference/composables-example.vue +320 -0
- package/templates/.claude/skills/frontend-vue/reference/form-example.vue +183 -0
- package/templates/.claude/skills/frontend-vue/reference/grid-example.vue +147 -0
- package/templates/.claude/skills/frontend-vue/reference/masterdata-example/[id].vue +106 -0
- package/templates/.claude/skills/frontend-vue/reference/masterdata-example/index.vue +58 -0
- package/templates/.claude/skills/frontend-vue/reference/popup-example.vue +159 -0
- package/templates/.claude/skills/pdf/LICENSE.txt +30 -0
- package/templates/.claude/skills/pdf/SKILL.md +294 -0
- package/templates/.claude/skills/pdf/forms.md +205 -0
- package/templates/.claude/skills/pdf/reference.md +612 -0
- package/templates/.claude/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/templates/.claude/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/templates/.claude/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/templates/.claude/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/templates/.claude/skills/pdf/scripts/create_validation_image.py +41 -0
- package/templates/.claude/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/templates/.claude/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/templates/.claude/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/templates/.claude/skills/pdf-processing/SKILL.md +107 -0
- package/templates/.claude/skills/pdf-processing-pro/FORMS.md +610 -0
- package/templates/.claude/skills/pdf-processing-pro/OCR.md +137 -0
- package/templates/.claude/skills/pdf-processing-pro/SKILL.md +296 -0
- package/templates/.claude/skills/pdf-processing-pro/TABLES.md +626 -0
- package/templates/.claude/skills/pdf-processing-pro/scripts/analyze_form.py +307 -0
- package/templates/.claude/skills/postgres/SKILL.md +69 -0
- package/templates/.claude/skills/postgres/reference/fn_get_examples.sql +208 -0
- package/templates/.claude/skills/postgres/reference/fn_rpt_examples.sql +239 -0
- package/templates/.claude/skills/postgres/reference/utility_functions.sql +94 -0
- package/templates/.claude/skills/pptx/LICENSE.txt +30 -0
- package/templates/.claude/skills/pptx/SKILL.md +484 -0
- package/templates/.claude/skills/pptx/html2pptx.md +625 -0
- package/templates/.claude/skills/pptx/ooxml.md +427 -0
- package/templates/.claude/skills/pptx/scripts/html2pptx.js +979 -0
- package/templates/.claude/skills/pptx/scripts/inventory.py +1020 -0
- package/templates/.claude/skills/pptx/scripts/rearrange.py +231 -0
- package/templates/.claude/skills/pptx/scripts/replace.py +385 -0
- package/templates/.claude/skills/pptx/scripts/thumbnail.py +450 -0
- package/templates/.claude/skills/repo-maintenance/SKILL.md +97 -0
- package/templates/.claude/skills/research/EXAMPLES.md +434 -0
- package/templates/.claude/skills/research/REFERENCE.md +399 -0
- package/templates/.claude/skills/research/SKILL.md +136 -0
- package/templates/.claude/skills/root-cause-tracing/SKILL.md +174 -0
- package/templates/.claude/skills/root-cause-tracing/find-polluter.sh +63 -0
- package/templates/.claude/skills/sharing-skills/SKILL.md +194 -0
- package/templates/.claude/skills/sql-optimization-patterns/SKILL.md +493 -0
- package/templates/.claude/skills/subagent-driven-development/SKILL.md +189 -0
- package/templates/.claude/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/templates/.claude/skills/systematic-debugging/SKILL.md +295 -0
- package/templates/.claude/skills/systematic-debugging/test-academic.md +14 -0
- package/templates/.claude/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/templates/.claude/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/templates/.claude/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/templates/.claude/skills/test-driven-development/SKILL.md +364 -0
- package/templates/.claude/skills/testing-anti-patterns/SKILL.md +302 -0
- package/templates/.claude/skills/testing-quality/SKILL.md +97 -0
- package/templates/.claude/skills/verification-before-completion/SKILL.md +139 -0
- package/templates/.claude/skills/webapp-testing/LICENSE.txt +202 -0
- package/templates/.claude/skills/webapp-testing/SKILL.md +96 -0
- package/templates/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
- package/templates/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/templates/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/templates/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
- package/templates/.claude/ukit/index/build-index.mjs +28 -0
- package/templates/.claude/ukit/index/cache-utils.mjs +140 -0
- package/templates/.claude/ukit/index/lib/index-core.mjs +2800 -0
- package/templates/.claude/ukit/index/query-index.mjs +150 -0
- package/templates/.claude/ukit/index/refresh-index.mjs +57 -0
- package/templates/.claude/ukit/index/reset-auto-permissions.mjs +76 -0
- package/templates/.claude/ukit/index/resolve-context.mjs +279 -0
- package/templates/.claude/ukit/index/route-catalog.mjs +258 -0
- package/templates/.claude/ukit/index/route-task.mjs +1994 -0
- package/templates/.claude/ukit/index/triage.mjs +133 -0
- package/templates/.claude/ukit/index/verify-context.mjs +689 -0
- package/templates/.claude/ukit/runtime/compact-threshold.mjs +1013 -0
- package/templates/.claude/ukit/runtime/output-compression.mjs +1340 -0
- package/templates/.claude/ukit/runtime/reinject-context.mjs +874 -0
- package/templates/.claude/ukit/runtime/token-utils.mjs +500 -0
- package/templates/.codex/README.md +83 -0
- package/templates/.codex/settings.json +187 -0
- package/templates/.gitignore +75 -0
- package/templates/AGENTS.md +116 -0
- package/templates/CLAUDE.md +93 -0
- package/templates/adapter-presets/antigravity/README.md +22 -0
- package/templates/adapter-presets/antigravity/rules.md +49 -0
- package/templates/adapter-presets/claude/settings.local.json +42 -0
- package/templates/adapter-presets/codex/settings.local.json +6 -0
- package/templates/adapter-presets/opencode/opencode.template.json +1 -0
- package/templates/docs/BUGFIX.md +20 -0
- package/templates/docs/BUG_INDEX.md +12 -0
- package/templates/docs/BUG_METRICS.md +7 -0
- package/templates/docs/BUG_TEMPLATE.md +13 -0
- package/templates/docs/CODE_MAP.md +35 -0
- package/templates/docs/INSTALL.md +113 -0
- package/templates/docs/MEMORY.md +49 -0
- package/templates/docs/PROJECT.md +50 -0
- package/templates/docs/UKIT_USAGE_GUIDE.md +147 -0
- package/templates/docs/WORKLOG.md +10 -0
- package/templates/ukit/README.md +14 -0
- package/templates/ukit/storage/cache/compact-history.json +3 -0
- package/templates/ukit/storage/cache/compact-pressure.json +1 -0
- package/templates/ukit/storage/cache/output-history.json +3 -0
- package/templates/ukit/storage/cache/prompt-cache.json +3 -0
- package/templates/ukit/storage/config.json +37 -0
- package/templates/ukit/storage/memory/projects/.gitkeep +2 -0
- package/templates/ukit/storage/memory/sessions/.gitkeep +0 -0
- package/templates/ukit/storage/memory/user.json +5 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file masterApi.js
|
|
3
|
+
* @description Các hàm truy vấn master data — dùng chung cho toàn bộ ứng dụng.
|
|
4
|
+
* Auto-import, gọi trực tiếp không cần import.
|
|
5
|
+
*
|
|
6
|
+
* NAMING CONVENTION:
|
|
7
|
+
* - get_[entity]_by_[field]() → Trả về 1 object {} hoặc {} rỗng
|
|
8
|
+
* - get_[entity]_list() → Trả về mảng raw data []
|
|
9
|
+
* - get_[entity]_list_dropdown() → Trả về Array<{value, label}> cho component Dropdown/Select
|
|
10
|
+
* - get_permission_create_of_group_[menu]() → Kiểm tra quyền tạo mới, trả boolean
|
|
11
|
+
*
|
|
12
|
+
* @requires request - từ useRequest.js (GET /select)
|
|
13
|
+
* @requires convertToDropdownValue - từ utils.js
|
|
14
|
+
* @requires get_schema - từ state.js
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Lấy thông tin agreement theo ID
|
|
19
|
+
* @param {number|string} id_agreement - ID agreement
|
|
20
|
+
* @returns {Promise<Object>} Object agreement hoặc {} nếu không tìm thấy
|
|
21
|
+
*/
|
|
22
|
+
export const get_agreement_by_id = async (id_agreement) => {
|
|
23
|
+
let data = {
|
|
24
|
+
schema: get_schema(),
|
|
25
|
+
table: "v_agreement",
|
|
26
|
+
conditions: JSON.stringify({ id_agreement: id_agreement }),
|
|
27
|
+
};
|
|
28
|
+
const tmp = await request("/select", data, "get");
|
|
29
|
+
if (tmp.length > 0) {
|
|
30
|
+
return tmp[0];
|
|
31
|
+
}
|
|
32
|
+
return {};
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Lấy thông tin agreement theo số hợp đồng
|
|
36
|
+
* @param {string} agreement_number - Số hợp đồng
|
|
37
|
+
* @returns {Promise<Object>} Object agreement hoặc {} nếu không tìm thấy
|
|
38
|
+
*/
|
|
39
|
+
export const get_agreement_by_number = async (agreement_number) => {
|
|
40
|
+
let data = {
|
|
41
|
+
schema: get_schema(),
|
|
42
|
+
table: "v_agreement",
|
|
43
|
+
conditions: JSON.stringify({ agreement_number: agreement_number }),
|
|
44
|
+
};
|
|
45
|
+
const tmp = await request("/select", data, "get");
|
|
46
|
+
if (tmp.length > 0) {
|
|
47
|
+
return tmp[0];
|
|
48
|
+
}
|
|
49
|
+
return {};
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Lấy danh sách ngôn ngữ (raw data)
|
|
53
|
+
* @returns {Promise<Array>} Mảng lang objects
|
|
54
|
+
*/
|
|
55
|
+
export const get_lang_list = async () => {
|
|
56
|
+
let data = {
|
|
57
|
+
schema: get_schema(),
|
|
58
|
+
table: "lang_list",
|
|
59
|
+
};
|
|
60
|
+
return await request("/select", data, "get");
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Lấy danh sách ngôn ngữ cho Dropdown (value=code, label=name)
|
|
64
|
+
* @returns {Promise<Array<{value: string, label: string}>>}
|
|
65
|
+
*/
|
|
66
|
+
export const get_lang_list_dropdown = async () => {
|
|
67
|
+
let data = {
|
|
68
|
+
schema: get_schema(),
|
|
69
|
+
table: "lang_list",
|
|
70
|
+
};
|
|
71
|
+
let resp = await request("/select", data, "get");
|
|
72
|
+
return convertToDropdownValue(resp, "code", "name");
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Lấy danh sách usergroup (raw data)
|
|
77
|
+
* @returns {Promise<Array>} Mảng usergroup objects
|
|
78
|
+
*/
|
|
79
|
+
export const get_usergroup_list = async () => {
|
|
80
|
+
let data = {
|
|
81
|
+
schema: get_schema(),
|
|
82
|
+
table: "usergroup",
|
|
83
|
+
};
|
|
84
|
+
return await request("/select", data, "get");
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Lấy danh sách usergroup cho Dropdown (value=code, label=name)
|
|
88
|
+
* @returns {Promise<Array<{value: string, label: string}>>}
|
|
89
|
+
*/
|
|
90
|
+
export const get_usergroup_list_dropdown = async () => {
|
|
91
|
+
let data = {
|
|
92
|
+
schema: get_schema(),
|
|
93
|
+
table: "usergroup",
|
|
94
|
+
};
|
|
95
|
+
let resp = await request("/select", data, "get");
|
|
96
|
+
return convertToDropdownValue(resp, "code", "name");
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Lấy danh sách user (raw data)
|
|
101
|
+
* @returns {Promise<Array>} Mảng user objects
|
|
102
|
+
*/
|
|
103
|
+
export const get_user_list = async () => {
|
|
104
|
+
let data = {
|
|
105
|
+
schema: get_schema(),
|
|
106
|
+
table: "user",
|
|
107
|
+
};
|
|
108
|
+
return await request("/select", data, "get");
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Lấy danh sách user cho Dropdown (value=email, label=fullname)
|
|
112
|
+
* @returns {Promise<Array<{value: string, label: string}>>}
|
|
113
|
+
*/
|
|
114
|
+
export const get_user_list_dropdown = async () => {
|
|
115
|
+
let data = {
|
|
116
|
+
schema: get_schema(),
|
|
117
|
+
table: "user",
|
|
118
|
+
};
|
|
119
|
+
let resp = await request("/select", data, "get");
|
|
120
|
+
return convertToDropdownValue(resp, "email", "fullname");
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Lấy danh sách token (raw data)
|
|
125
|
+
* @returns {Promise<Array>}
|
|
126
|
+
*/
|
|
127
|
+
export const get_token_list = async () => {
|
|
128
|
+
let data = {
|
|
129
|
+
schema: get_schema(),
|
|
130
|
+
table: "token",
|
|
131
|
+
};
|
|
132
|
+
return await request("/select", data, "get");
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Lấy danh sách notification (raw data)
|
|
137
|
+
* @returns {Promise<Array>}
|
|
138
|
+
*/
|
|
139
|
+
export const get_notification_list = async () => {
|
|
140
|
+
let data = {
|
|
141
|
+
schema: get_schema(),
|
|
142
|
+
table: "notification",
|
|
143
|
+
};
|
|
144
|
+
return await request("/select", data, "get");
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Lấy danh sách modern trade (raw data)
|
|
149
|
+
* @returns {Promise<Array>}
|
|
150
|
+
*/
|
|
151
|
+
export const get_modern_trade_list = async () => {
|
|
152
|
+
let data = {
|
|
153
|
+
schema: get_schema(),
|
|
154
|
+
table: "modern_trade",
|
|
155
|
+
};
|
|
156
|
+
return await request("/select", data, "get");
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Lấy danh sách modern trade cho Dropdown (value=name, label=name)
|
|
160
|
+
* @returns {Promise<Array<{value: string, label: string}>>}
|
|
161
|
+
*/
|
|
162
|
+
export const get_modern_trade_list_dropdown = async () => {
|
|
163
|
+
let data = {
|
|
164
|
+
schema: get_schema(),
|
|
165
|
+
table: "modern_trade",
|
|
166
|
+
};
|
|
167
|
+
let resp = await request("/select", data, "get");
|
|
168
|
+
return convertToDropdownValue(resp, "name", "name");
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Lấy danh sách branch (raw data)
|
|
173
|
+
* @returns {Promise<Array>}
|
|
174
|
+
*/
|
|
175
|
+
export const get_branch_list = async () => {
|
|
176
|
+
let data = {
|
|
177
|
+
schema: get_schema(),
|
|
178
|
+
table: "branch",
|
|
179
|
+
};
|
|
180
|
+
return await request("/select", data, "get");
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Lấy danh sách branch cho Dropdown (value=name, label=name)
|
|
184
|
+
* @returns {Promise<Array<{value: string, label: string}>>}
|
|
185
|
+
*/
|
|
186
|
+
export const get_branch_list_dropdown = async () => {
|
|
187
|
+
let data = {
|
|
188
|
+
schema: get_schema(),
|
|
189
|
+
table: "branch",
|
|
190
|
+
};
|
|
191
|
+
let resp = await request("/select", data, "get");
|
|
192
|
+
return convertToDropdownValue(resp, "name", "name");
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Lấy danh sách type of media (raw data)
|
|
197
|
+
* @returns {Promise<Array>}
|
|
198
|
+
*/
|
|
199
|
+
export const get_type_of_media_list = async () => {
|
|
200
|
+
let data = {
|
|
201
|
+
schema: get_schema(),
|
|
202
|
+
table: "type_of_media",
|
|
203
|
+
};
|
|
204
|
+
return await request("/select", data, "get");
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Lấy danh sách type of media cho Dropdown (value=name, label=name)
|
|
209
|
+
* @returns {Promise<Array<{value: string, label: string}>>}
|
|
210
|
+
*/
|
|
211
|
+
export const get_type_of_media_list_dropdown = async () => {
|
|
212
|
+
let data = {
|
|
213
|
+
schema: get_schema(),
|
|
214
|
+
table: "type_of_media",
|
|
215
|
+
};
|
|
216
|
+
let resp = await request("/select", data, "get");
|
|
217
|
+
return convertToDropdownValue(resp, "name", "name");
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* Lấy type of media theo ID
|
|
221
|
+
* @param {number|string} id - ID type of media
|
|
222
|
+
* @returns {Promise<Object>} Object hoặc {} nếu không tìm thấy
|
|
223
|
+
*/
|
|
224
|
+
export const get_type_of_media_by_id = async (id) => {
|
|
225
|
+
let data = {
|
|
226
|
+
schema: get_schema(),
|
|
227
|
+
table: "type_of_media",
|
|
228
|
+
conditions: JSON.stringify({ id_type_of_media: id }),
|
|
229
|
+
};
|
|
230
|
+
let resp = await request("/select", data, "get");
|
|
231
|
+
if (resp.length > 0) {
|
|
232
|
+
return resp[0];
|
|
233
|
+
} else {
|
|
234
|
+
return {};
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Lấy type of media theo tên
|
|
239
|
+
* @param {string} name - Tên type of media
|
|
240
|
+
* @returns {Promise<Object>} Object hoặc {} nếu không tìm thấy
|
|
241
|
+
*/
|
|
242
|
+
export const get_type_of_media_by_name = async (name) => {
|
|
243
|
+
let data = {
|
|
244
|
+
schema: get_schema(),
|
|
245
|
+
table: "type_of_media",
|
|
246
|
+
conditions: JSON.stringify({ name: name }),
|
|
247
|
+
};
|
|
248
|
+
let resp = await request("/select", data, "get");
|
|
249
|
+
if (resp.length > 0) {
|
|
250
|
+
return resp[0];
|
|
251
|
+
} else {
|
|
252
|
+
return {};
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Lấy danh sách agreement period (raw data)
|
|
258
|
+
* @returns {Promise<Array>}
|
|
259
|
+
*/
|
|
260
|
+
export const get_agreement_period_list = async () => {
|
|
261
|
+
let data = {
|
|
262
|
+
schema: get_schema(),
|
|
263
|
+
table: "agreement_period",
|
|
264
|
+
};
|
|
265
|
+
return await request("/select", data, "get");
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Lấy danh sách agreement period cho Dropdown (value=name, label=name)
|
|
269
|
+
* @returns {Promise<Array<{value: string, label: string}>>}
|
|
270
|
+
*/
|
|
271
|
+
export const get_agreement_period_list_dropdown = async () => {
|
|
272
|
+
let data = {
|
|
273
|
+
schema: get_schema(),
|
|
274
|
+
table: "agreement_period",
|
|
275
|
+
};
|
|
276
|
+
let resp = await request("/select", data, "get");
|
|
277
|
+
return convertToDropdownValue(resp, "name", "name");
|
|
278
|
+
};
|
|
279
|
+
/**
|
|
280
|
+
* Lấy danh sách agreement period loại "month" cho Dropdown, sắp xếp theo tên
|
|
281
|
+
* @returns {Promise<Array<{value: string, label: string}>>}
|
|
282
|
+
*/
|
|
283
|
+
export const get_agreement_period_list_dropdown_month = async () => {
|
|
284
|
+
let data = {
|
|
285
|
+
schema: get_schema(),
|
|
286
|
+
table: "agreement_period",
|
|
287
|
+
conditions: JSON.stringify({ type: "month" }),
|
|
288
|
+
order_by: ["LENGTH(name) asc", "name asc"],
|
|
289
|
+
};
|
|
290
|
+
let resp = await request("/select", data, "get");
|
|
291
|
+
return convertToDropdownValue(resp, "name", "name");
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* Lấy danh sách agreement period loại "year" cho Dropdown, sắp xếp theo tên
|
|
295
|
+
* @returns {Promise<Array<{value: string, label: string}>>}
|
|
296
|
+
*/
|
|
297
|
+
export const get_agreement_period_list_dropdown_year = async () => {
|
|
298
|
+
let data = {
|
|
299
|
+
schema: get_schema(),
|
|
300
|
+
table: "agreement_period",
|
|
301
|
+
conditions: JSON.stringify({ type: "year" }),
|
|
302
|
+
order_by: ["name asc"],
|
|
303
|
+
};
|
|
304
|
+
let resp = await request("/select", data, "get");
|
|
305
|
+
return convertToDropdownValue(resp, "name", "name");
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Kiểm tra quyền tạo Agreement của usergroup
|
|
310
|
+
* @param {string|Array<string>} usergroup - Mã nhóm user (dùng operator "(in)")
|
|
311
|
+
* @returns {Promise<boolean>} true nếu có quyền tạo
|
|
312
|
+
*/
|
|
313
|
+
export const get_permission_create_of_group_agreement = async (usergroup) => {
|
|
314
|
+
let conditions = { "(in)usergroup": usergroup, menu: "Agreement", can_create: true };
|
|
315
|
+
let data = {
|
|
316
|
+
schema: get_schema(),
|
|
317
|
+
table: "permission",
|
|
318
|
+
conditions: JSON.stringify(conditions),
|
|
319
|
+
};
|
|
320
|
+
let resp = await request("/select", data, "get");
|
|
321
|
+
if (resp.length > 0) {
|
|
322
|
+
return true;
|
|
323
|
+
}
|
|
324
|
+
return false;
|
|
325
|
+
};
|
|
326
|
+
/**
|
|
327
|
+
* Kiểm tra quyền tạo Billing của usergroup
|
|
328
|
+
* @param {string|Array<string>} usergroup - Mã nhóm user
|
|
329
|
+
* @returns {Promise<boolean>} true nếu có quyền tạo
|
|
330
|
+
*/
|
|
331
|
+
export const get_permission_create_of_group_billing = async (usergroup) => {
|
|
332
|
+
let conditions = { "(in)usergroup": usergroup, menu: "Billing", "can_create": true };
|
|
333
|
+
let data = {
|
|
334
|
+
schema: get_schema(),
|
|
335
|
+
table: "permission",
|
|
336
|
+
conditions: JSON.stringify(conditions),
|
|
337
|
+
};
|
|
338
|
+
let resp = await request("/select", data, "get");
|
|
339
|
+
if (resp.length > 0) {
|
|
340
|
+
return true;
|
|
341
|
+
}
|
|
342
|
+
return false;
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Kiểm tra quyền tạo Collect Point của usergroup
|
|
347
|
+
* @param {string|Array<string>} usergroup - Mã nhóm user
|
|
348
|
+
* @returns {Promise<boolean>} true nếu có quyền tạo
|
|
349
|
+
*/
|
|
350
|
+
export const get_permission_create_of_group_collect_point = async (usergroup) => {
|
|
351
|
+
let conditions = { "(in)usergroup": usergroup, menu: "Collect Point", "can_create": true };
|
|
352
|
+
let data = {
|
|
353
|
+
schema: get_schema(),
|
|
354
|
+
table: "permission",
|
|
355
|
+
conditions: JSON.stringify(conditions),
|
|
356
|
+
};
|
|
357
|
+
let resp = await request("/select", data, "get");
|
|
358
|
+
if (resp.length > 0) {
|
|
359
|
+
return true;
|
|
360
|
+
}
|
|
361
|
+
return false;
|
|
362
|
+
};
|