daycare-cli 0.0.25 → 0.0.27
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/dist/config/configResolve.js +5 -0
- package/dist/config/configResolve.js.map +1 -1
- package/dist/config/configResolve.spec.js +10 -0
- package/dist/config/configResolve.spec.js.map +1 -1
- package/dist/config/configSettingsParse.d.ts.map +1 -1
- package/dist/config/configSettingsParse.js +3 -0
- package/dist/config/configSettingsParse.js.map +1 -1
- package/dist/engine/agents/agent.d.ts +1 -1
- package/dist/engine/agents/agent.d.ts.map +1 -1
- package/dist/engine/agents/agent.js +28 -22
- package/dist/engine/agents/agent.js.map +1 -1
- package/dist/engine/agents/agentSystem.d.ts +12 -0
- package/dist/engine/agents/agentSystem.d.ts.map +1 -1
- package/dist/engine/agents/agentSystem.js +218 -2
- package/dist/engine/agents/agentSystem.js.map +1 -1
- package/dist/engine/agents/agentSystem.spec.d.ts +2 -0
- package/dist/engine/agents/agentSystem.spec.d.ts.map +1 -0
- package/dist/engine/agents/agentSystem.spec.js +382 -0
- package/dist/engine/agents/agentSystem.spec.js.map +1 -0
- package/dist/engine/agents/ops/agentAppFolderPathResolve.d.ts +7 -0
- package/dist/engine/agents/ops/agentAppFolderPathResolve.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentAppFolderPathResolve.js +12 -0
- package/dist/engine/agents/ops/agentAppFolderPathResolve.js.map +1 -0
- package/dist/engine/agents/ops/agentAppFolderPathResolve.spec.d.ts +2 -0
- package/dist/engine/agents/ops/agentAppFolderPathResolve.spec.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentAppFolderPathResolve.spec.js +18 -0
- package/dist/engine/agents/ops/agentAppFolderPathResolve.spec.js.map +1 -0
- package/dist/engine/agents/ops/agentBackgroundList.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentBackgroundList.js +10 -6
- package/dist/engine/agents/ops/agentBackgroundList.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorLabel.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorLabel.js +13 -0
- package/dist/engine/agents/ops/agentDescriptorLabel.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorLabel.spec.js +16 -0
- package/dist/engine/agents/ops/agentDescriptorLabel.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorRead.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorRead.js +10 -0
- package/dist/engine/agents/ops/agentDescriptorRead.js.map +1 -1
- package/dist/engine/agents/ops/agentDescriptorTypes.d.ts +7 -0
- package/dist/engine/agents/ops/agentDescriptorTypes.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentInbox.d.ts +5 -0
- package/dist/engine/agents/ops/agentInbox.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentInbox.js +9 -0
- package/dist/engine/agents/ops/agentInbox.js.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.d.ts +2 -2
- package/dist/engine/agents/ops/agentLoopRun.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.js +57 -0
- package/dist/engine/agents/ops/agentLoopRun.js.map +1 -1
- package/dist/engine/agents/ops/agentLoopRun.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentPromptResolve.d.ts +11 -0
- package/dist/engine/agents/ops/agentPromptResolve.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentPromptResolve.js +28 -0
- package/dist/engine/agents/ops/agentPromptResolve.js.map +1 -0
- package/dist/engine/agents/ops/agentPromptResolve.spec.d.ts +2 -0
- package/dist/engine/agents/ops/agentPromptResolve.spec.d.ts.map +1 -0
- package/dist/engine/agents/ops/agentPromptResolve.spec.js +58 -0
- package/dist/engine/agents/ops/agentPromptResolve.spec.js.map +1 -0
- package/dist/engine/agents/ops/agentStateRead.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentStateRead.js +2 -1
- package/dist/engine/agents/ops/agentStateRead.js.map +1 -1
- package/dist/engine/agents/ops/agentStateRead.spec.js +22 -0
- package/dist/engine/agents/ops/agentStateRead.spec.js.map +1 -1
- package/dist/engine/agents/ops/agentTypes.d.ts +3 -1
- package/dist/engine/agents/ops/agentTypes.d.ts.map +1 -1
- package/dist/engine/apps/appDiscover.d.ts +7 -0
- package/dist/engine/apps/appDiscover.d.ts.map +1 -0
- package/dist/engine/apps/appDiscover.js +67 -0
- package/dist/engine/apps/appDiscover.js.map +1 -0
- package/dist/engine/apps/appDiscover.spec.d.ts +2 -0
- package/dist/engine/apps/appDiscover.spec.d.ts.map +1 -0
- package/dist/engine/apps/appDiscover.spec.js +77 -0
- package/dist/engine/apps/appDiscover.spec.js.map +1 -0
- package/dist/engine/apps/appExecute.d.ts +19 -0
- package/dist/engine/apps/appExecute.d.ts.map +1 -0
- package/dist/engine/apps/appExecute.js +75 -0
- package/dist/engine/apps/appExecute.js.map +1 -0
- package/dist/engine/apps/appExecute.spec.d.ts +2 -0
- package/dist/engine/apps/appExecute.spec.d.ts.map +1 -0
- package/dist/engine/apps/appExecute.spec.js +252 -0
- package/dist/engine/apps/appExecute.spec.js.map +1 -0
- package/dist/engine/apps/appInstall.d.ts +7 -0
- package/dist/engine/apps/appInstall.d.ts.map +1 -0
- package/dist/engine/apps/appInstall.js +52 -0
- package/dist/engine/apps/appInstall.js.map +1 -0
- package/dist/engine/apps/appInstall.spec.d.ts +2 -0
- package/dist/engine/apps/appInstall.spec.d.ts.map +1 -0
- package/dist/engine/apps/appInstall.spec.js +127 -0
- package/dist/engine/apps/appInstall.spec.js.map +1 -0
- package/dist/engine/apps/appInstallToolBuild.d.ts +8 -0
- package/dist/engine/apps/appInstallToolBuild.d.ts.map +1 -0
- package/dist/engine/apps/appInstallToolBuild.js +42 -0
- package/dist/engine/apps/appInstallToolBuild.js.map +1 -0
- package/dist/engine/apps/appInstallToolBuild.spec.d.ts +2 -0
- package/dist/engine/apps/appInstallToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/apps/appInstallToolBuild.spec.js +90 -0
- package/dist/engine/apps/appInstallToolBuild.spec.js.map +1 -0
- package/dist/engine/apps/appManager.d.ts +19 -0
- package/dist/engine/apps/appManager.d.ts.map +1 -0
- package/dist/engine/apps/appManager.js +45 -0
- package/dist/engine/apps/appManager.js.map +1 -0
- package/dist/engine/apps/appManager.spec.d.ts +2 -0
- package/dist/engine/apps/appManager.spec.d.ts.map +1 -0
- package/dist/engine/apps/appManager.spec.js +53 -0
- package/dist/engine/apps/appManager.spec.js.map +1 -0
- package/dist/engine/apps/appManifestParse.d.ts +7 -0
- package/dist/engine/apps/appManifestParse.d.ts.map +1 -0
- package/dist/engine/apps/appManifestParse.js +41 -0
- package/dist/engine/apps/appManifestParse.js.map +1 -0
- package/dist/engine/apps/appManifestParse.spec.d.ts +2 -0
- package/dist/engine/apps/appManifestParse.spec.d.ts.map +1 -0
- package/dist/engine/apps/appManifestParse.spec.js +60 -0
- package/dist/engine/apps/appManifestParse.spec.js.map +1 -0
- package/dist/engine/apps/appManifestSerialize.d.ts +7 -0
- package/dist/engine/apps/appManifestSerialize.d.ts.map +1 -0
- package/dist/engine/apps/appManifestSerialize.js +14 -0
- package/dist/engine/apps/appManifestSerialize.js.map +1 -0
- package/dist/engine/apps/appManifestValidate.d.ts +7 -0
- package/dist/engine/apps/appManifestValidate.d.ts.map +1 -0
- package/dist/engine/apps/appManifestValidate.js +27 -0
- package/dist/engine/apps/appManifestValidate.js.map +1 -0
- package/dist/engine/apps/appManifestValidate.spec.d.ts +2 -0
- package/dist/engine/apps/appManifestValidate.spec.d.ts.map +1 -0
- package/dist/engine/apps/appManifestValidate.spec.js +30 -0
- package/dist/engine/apps/appManifestValidate.spec.js.map +1 -0
- package/dist/engine/apps/appPermissionBuild.d.ts +7 -0
- package/dist/engine/apps/appPermissionBuild.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionBuild.js +28 -0
- package/dist/engine/apps/appPermissionBuild.js.map +1 -0
- package/dist/engine/apps/appPermissionBuild.spec.d.ts +2 -0
- package/dist/engine/apps/appPermissionBuild.spec.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionBuild.spec.js +44 -0
- package/dist/engine/apps/appPermissionBuild.spec.js.map +1 -0
- package/dist/engine/apps/appPermissionStateGrant.d.ts +7 -0
- package/dist/engine/apps/appPermissionStateGrant.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionStateGrant.js +14 -0
- package/dist/engine/apps/appPermissionStateGrant.js.map +1 -0
- package/dist/engine/apps/appPermissionStateGrant.spec.d.ts +2 -0
- package/dist/engine/apps/appPermissionStateGrant.spec.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionStateGrant.spec.js +33 -0
- package/dist/engine/apps/appPermissionStateGrant.spec.js.map +1 -0
- package/dist/engine/apps/appPermissionStatePathBuild.d.ts +6 -0
- package/dist/engine/apps/appPermissionStatePathBuild.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionStatePathBuild.js +9 -0
- package/dist/engine/apps/appPermissionStatePathBuild.js.map +1 -0
- package/dist/engine/apps/appPermissionStateRead.d.ts +6 -0
- package/dist/engine/apps/appPermissionStateRead.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionStateRead.js +40 -0
- package/dist/engine/apps/appPermissionStateRead.js.map +1 -0
- package/dist/engine/apps/appPermissionStateWrite.d.ts +6 -0
- package/dist/engine/apps/appPermissionStateWrite.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionStateWrite.js +32 -0
- package/dist/engine/apps/appPermissionStateWrite.js.map +1 -0
- package/dist/engine/apps/appPermissionsParse.d.ts +7 -0
- package/dist/engine/apps/appPermissionsParse.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionsParse.js +62 -0
- package/dist/engine/apps/appPermissionsParse.js.map +1 -0
- package/dist/engine/apps/appPermissionsParse.spec.d.ts +2 -0
- package/dist/engine/apps/appPermissionsParse.spec.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionsParse.spec.js +31 -0
- package/dist/engine/apps/appPermissionsParse.spec.js.map +1 -0
- package/dist/engine/apps/appPermissionsSerialize.d.ts +7 -0
- package/dist/engine/apps/appPermissionsSerialize.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionsSerialize.js +20 -0
- package/dist/engine/apps/appPermissionsSerialize.js.map +1 -0
- package/dist/engine/apps/appPermissionsSerialize.spec.d.ts +2 -0
- package/dist/engine/apps/appPermissionsSerialize.spec.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionsSerialize.spec.js +20 -0
- package/dist/engine/apps/appPermissionsSerialize.spec.js.map +1 -0
- package/dist/engine/apps/appPermissionsValidate.d.ts +7 -0
- package/dist/engine/apps/appPermissionsValidate.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionsValidate.js +34 -0
- package/dist/engine/apps/appPermissionsValidate.js.map +1 -0
- package/dist/engine/apps/appPermissionsValidate.spec.d.ts +2 -0
- package/dist/engine/apps/appPermissionsValidate.spec.d.ts.map +1 -0
- package/dist/engine/apps/appPermissionsValidate.spec.js +29 -0
- package/dist/engine/apps/appPermissionsValidate.spec.js.map +1 -0
- package/dist/engine/apps/appReviewPromptBuild.d.ts +22 -0
- package/dist/engine/apps/appReviewPromptBuild.d.ts.map +1 -0
- package/dist/engine/apps/appReviewPromptBuild.js +66 -0
- package/dist/engine/apps/appReviewPromptBuild.js.map +1 -0
- package/dist/engine/apps/appReviewPromptBuild.spec.d.ts +2 -0
- package/dist/engine/apps/appReviewPromptBuild.spec.d.ts.map +1 -0
- package/dist/engine/apps/appReviewPromptBuild.spec.js +49 -0
- package/dist/engine/apps/appReviewPromptBuild.spec.js.map +1 -0
- package/dist/engine/apps/appReviewProvidersResolve.d.ts +8 -0
- package/dist/engine/apps/appReviewProvidersResolve.d.ts.map +1 -0
- package/dist/engine/apps/appReviewProvidersResolve.js +30 -0
- package/dist/engine/apps/appReviewProvidersResolve.js.map +1 -0
- package/dist/engine/apps/appReviewProvidersResolve.spec.d.ts +2 -0
- package/dist/engine/apps/appReviewProvidersResolve.spec.d.ts.map +1 -0
- package/dist/engine/apps/appReviewProvidersResolve.spec.js +29 -0
- package/dist/engine/apps/appReviewProvidersResolve.spec.js.map +1 -0
- package/dist/engine/apps/appRuleApply.d.ts +20 -0
- package/dist/engine/apps/appRuleApply.d.ts.map +1 -0
- package/dist/engine/apps/appRuleApply.js +54 -0
- package/dist/engine/apps/appRuleApply.js.map +1 -0
- package/dist/engine/apps/appRuleApply.spec.d.ts +2 -0
- package/dist/engine/apps/appRuleApply.spec.d.ts.map +1 -0
- package/dist/engine/apps/appRuleApply.spec.js +87 -0
- package/dist/engine/apps/appRuleApply.spec.js.map +1 -0
- package/dist/engine/apps/appRuleToolBuild.d.ts +8 -0
- package/dist/engine/apps/appRuleToolBuild.d.ts.map +1 -0
- package/dist/engine/apps/appRuleToolBuild.js +98 -0
- package/dist/engine/apps/appRuleToolBuild.js.map +1 -0
- package/dist/engine/apps/appRuleToolBuild.spec.d.ts +2 -0
- package/dist/engine/apps/appRuleToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/apps/appRuleToolBuild.spec.js +137 -0
- package/dist/engine/apps/appRuleToolBuild.spec.js.map +1 -0
- package/dist/engine/apps/appToolBuild.d.ts +8 -0
- package/dist/engine/apps/appToolBuild.d.ts.map +1 -0
- package/dist/engine/apps/appToolBuild.js +52 -0
- package/dist/engine/apps/appToolBuild.js.map +1 -0
- package/dist/engine/apps/appToolBuild.spec.d.ts +2 -0
- package/dist/engine/apps/appToolBuild.spec.d.ts.map +1 -0
- package/dist/engine/apps/appToolBuild.spec.js +29 -0
- package/dist/engine/apps/appToolBuild.spec.js.map +1 -0
- package/dist/engine/apps/appToolExecutorBuild.d.ts +32 -0
- package/dist/engine/apps/appToolExecutorBuild.d.ts.map +1 -0
- package/dist/engine/apps/appToolExecutorBuild.js +69 -0
- package/dist/engine/apps/appToolExecutorBuild.js.map +1 -0
- package/dist/engine/apps/appToolExecutorBuild.spec.d.ts +2 -0
- package/dist/engine/apps/appToolExecutorBuild.spec.d.ts.map +1 -0
- package/dist/engine/apps/appToolExecutorBuild.spec.js +227 -0
- package/dist/engine/apps/appToolExecutorBuild.spec.js.map +1 -0
- package/dist/engine/apps/appToolNameFormat.d.ts +6 -0
- package/dist/engine/apps/appToolNameFormat.d.ts.map +1 -0
- package/dist/engine/apps/appToolNameFormat.js +8 -0
- package/dist/engine/apps/appToolNameFormat.js.map +1 -0
- package/dist/engine/apps/appToolReview.d.ts +27 -0
- package/dist/engine/apps/appToolReview.d.ts.map +1 -0
- package/dist/engine/apps/appToolReview.js +53 -0
- package/dist/engine/apps/appToolReview.js.map +1 -0
- package/dist/engine/apps/appToolReview.spec.d.ts +2 -0
- package/dist/engine/apps/appToolReview.spec.d.ts.map +1 -0
- package/dist/engine/apps/appToolReview.spec.js +144 -0
- package/dist/engine/apps/appToolReview.spec.js.map +1 -0
- package/dist/engine/apps/appTypes.d.ts +30 -0
- package/dist/engine/apps/appTypes.d.ts.map +1 -0
- package/dist/engine/apps/appTypes.js +2 -0
- package/dist/engine/apps/appTypes.js.map +1 -0
- package/dist/engine/engine.d.ts +2 -0
- package/dist/engine/engine.d.ts.map +1 -1
- package/dist/engine/engine.js +10 -1
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/engine.spec.js +45 -0
- package/dist/engine/engine.spec.js.map +1 -1
- package/dist/engine/messages/incomingMessages.js +3 -0
- package/dist/engine/messages/incomingMessages.js.map +1 -1
- package/dist/engine/modules/connectors/types.d.ts +6 -1
- package/dist/engine/modules/connectors/types.d.ts.map +1 -1
- package/dist/engine/modules/rlm/rlmExecute.d.ts +2 -2
- package/dist/engine/modules/rlm/rlmExecute.d.ts.map +1 -1
- package/dist/engine/modules/rlm/rlmExecute.js +6 -1
- package/dist/engine/modules/rlm/rlmExecute.js.map +1 -1
- package/dist/engine/modules/rlm/rlmExecute.spec.js +14 -0
- package/dist/engine/modules/rlm/rlmExecute.spec.js.map +1 -1
- package/dist/engine/modules/rlm/rlmTool.d.ts +2 -2
- package/dist/engine/modules/rlm/rlmTool.d.ts.map +1 -1
- package/dist/engine/modules/rlm/rlmTool.js +3 -2
- package/dist/engine/modules/rlm/rlmTool.js.map +1 -1
- package/dist/engine/modules/rlm/rlmTool.spec.js +38 -2
- package/dist/engine/modules/rlm/rlmTool.spec.js.map +1 -1
- package/dist/engine/modules/toolResolver.d.ts +1 -0
- package/dist/engine/modules/toolResolver.d.ts.map +1 -1
- package/dist/engine/modules/toolResolver.js.map +1 -1
- package/dist/engine/modules/tools/background.d.ts.map +1 -1
- package/dist/engine/modules/tools/background.js +3 -1
- package/dist/engine/modules/tools/background.js.map +1 -1
- package/dist/engine/modules/tools/channelSendTool.js +3 -0
- package/dist/engine/modules/tools/channelSendTool.js.map +1 -1
- package/dist/engine/modules/tools/permissions.d.ts.map +1 -1
- package/dist/engine/modules/tools/permissions.js +57 -9
- package/dist/engine/modules/tools/permissions.js.map +1 -1
- package/dist/engine/modules/tools/permissions.spec.js +84 -0
- package/dist/engine/modules/tools/permissions.spec.js.map +1 -1
- package/dist/engine/modules/tools/types.d.ts +2 -0
- package/dist/engine/modules/tools/types.d.ts.map +1 -1
- package/dist/engine/permissions/permissionAccessAllows.d.ts +1 -1
- package/dist/engine/permissions/permissionAccessAllows.d.ts.map +1 -1
- package/dist/engine/permissions/permissionAccessAllows.js +35 -1
- package/dist/engine/permissions/permissionAccessAllows.js.map +1 -1
- package/dist/engine/permissions/permissionAccessAllows.spec.js +52 -0
- package/dist/engine/permissions/permissionAccessAllows.spec.js.map +1 -1
- package/dist/engine/permissions/permissionAccessApply.d.ts.map +1 -1
- package/dist/engine/permissions/permissionAccessApply.js +11 -0
- package/dist/engine/permissions/permissionAccessApply.js.map +1 -1
- package/dist/engine/permissions/permissionAccessApply.spec.js +15 -0
- package/dist/engine/permissions/permissionAccessApply.spec.js.map +1 -1
- package/dist/engine/permissions/permissionAccessParse.d.ts +1 -1
- package/dist/engine/permissions/permissionAccessParse.d.ts.map +1 -1
- package/dist/engine/permissions/permissionAccessParse.js +5 -2
- package/dist/engine/permissions/permissionAccessParse.js.map +1 -1
- package/dist/engine/permissions/permissionAccessParse.spec.js +2 -1
- package/dist/engine/permissions/permissionAccessParse.spec.js.map +1 -1
- package/dist/engine/permissions/permissionBuildCron.d.ts.map +1 -1
- package/dist/engine/permissions/permissionBuildCron.js +1 -0
- package/dist/engine/permissions/permissionBuildCron.js.map +1 -1
- package/dist/engine/permissions/permissionBuildDefault.d.ts.map +1 -1
- package/dist/engine/permissions/permissionBuildDefault.js +1 -0
- package/dist/engine/permissions/permissionBuildDefault.js.map +1 -1
- package/dist/engine/permissions/permissionBuildDefault.spec.js +1 -0
- package/dist/engine/permissions/permissionBuildDefault.spec.js.map +1 -1
- package/dist/engine/permissions/permissionDescribeDecision.d.ts.map +1 -1
- package/dist/engine/permissions/permissionDescribeDecision.js +3 -0
- package/dist/engine/permissions/permissionDescribeDecision.js.map +1 -1
- package/dist/engine/permissions/permissionDescribeDecision.spec.js +3 -0
- package/dist/engine/permissions/permissionDescribeDecision.spec.js.map +1 -1
- package/dist/engine/permissions/permissionFormatTag.d.ts.map +1 -1
- package/dist/engine/permissions/permissionFormatTag.js +3 -0
- package/dist/engine/permissions/permissionFormatTag.js.map +1 -1
- package/dist/engine/permissions/permissionFormatTag.spec.js +3 -0
- package/dist/engine/permissions/permissionFormatTag.spec.js.map +1 -1
- package/dist/engine/permissions/permissionMergeDefault.d.ts.map +1 -1
- package/dist/engine/permissions/permissionMergeDefault.js +1 -0
- package/dist/engine/permissions/permissionMergeDefault.js.map +1 -1
- package/dist/engine/permissions/permissionMergeDefault.spec.js +9 -0
- package/dist/engine/permissions/permissionMergeDefault.spec.js.map +1 -1
- package/dist/engine/permissions/permissionTagsApply.d.ts +1 -1
- package/dist/engine/permissions/permissionTagsApply.js +1 -1
- package/dist/engine/permissions/permissionTagsApply.spec.js +9 -1
- package/dist/engine/permissions/permissionTagsApply.spec.js.map +1 -1
- package/dist/engine/permissions/permissionTagsNormalize.d.ts +1 -1
- package/dist/engine/permissions/permissionTagsNormalize.d.ts.map +1 -1
- package/dist/engine/permissions/permissionTagsNormalize.js +4 -1
- package/dist/engine/permissions/permissionTagsNormalize.js.map +1 -1
- package/dist/engine/permissions/permissionTagsNormalize.spec.js +2 -1
- package/dist/engine/permissions/permissionTagsNormalize.spec.js.map +1 -1
- package/dist/engine/permissions/permissionTagsValidate.d.ts +1 -1
- package/dist/engine/permissions/permissionTagsValidate.js +1 -1
- package/dist/engine/permissions/permissionTagsValidate.spec.js +14 -0
- package/dist/engine/permissions/permissionTagsValidate.spec.js.map +1 -1
- package/dist/engine/permissions/permissionWorkspaceGranted.d.ts +7 -0
- package/dist/engine/permissions/permissionWorkspaceGranted.d.ts.map +1 -0
- package/dist/engine/permissions/permissionWorkspaceGranted.js +12 -0
- package/dist/engine/permissions/permissionWorkspaceGranted.js.map +1 -0
- package/dist/engine/permissions/permissionWorkspaceGranted.spec.d.ts +2 -0
- package/dist/engine/permissions/permissionWorkspaceGranted.spec.d.ts.map +1 -0
- package/dist/engine/permissions/permissionWorkspaceGranted.spec.js +35 -0
- package/dist/engine/permissions/permissionWorkspaceGranted.spec.js.map +1 -0
- package/dist/engine/permissions/permissionWorkspacePathResolve.d.ts +7 -0
- package/dist/engine/permissions/permissionWorkspacePathResolve.d.ts.map +1 -0
- package/dist/engine/permissions/permissionWorkspacePathResolve.js +42 -0
- package/dist/engine/permissions/permissionWorkspacePathResolve.js.map +1 -0
- package/dist/engine/permissions/permissionWorkspacePathResolve.spec.d.ts +2 -0
- package/dist/engine/permissions/permissionWorkspacePathResolve.spec.d.ts.map +1 -0
- package/dist/engine/permissions/permissionWorkspacePathResolve.spec.js +36 -0
- package/dist/engine/permissions/permissionWorkspacePathResolve.spec.js.map +1 -0
- package/dist/engine/permissions.d.ts +1 -0
- package/dist/engine/permissions.d.ts.map +1 -1
- package/dist/engine/permissions.js +7 -0
- package/dist/engine/permissions.js.map +1 -1
- package/dist/engine/scheduling/gatePermissionsCheck.d.ts +1 -1
- package/dist/engine/scheduling/gatePermissionsCheck.js +5 -2
- package/dist/engine/scheduling/gatePermissionsCheck.js.map +1 -1
- package/dist/engine/scheduling/gatePermissionsCheck.spec.js +20 -1
- package/dist/engine/scheduling/gatePermissionsCheck.spec.js.map +1 -1
- package/dist/plugins/telegram/connector.d.ts.map +1 -1
- package/dist/plugins/telegram/connector.js +11 -1
- package/dist/plugins/telegram/connector.js.map +1 -1
- package/dist/plugins/telegram/connector.spec.js +40 -0
- package/dist/plugins/telegram/connector.spec.js.map +1 -1
- package/dist/plugins/upgrade/upgradeRestartRun.d.ts.map +1 -1
- package/dist/plugins/upgrade/upgradeRestartRun.js +96 -4
- package/dist/plugins/upgrade/upgradeRestartRun.js.map +1 -1
- package/dist/plugins/upgrade/upgradeRestartRun.spec.js +74 -11
- package/dist/plugins/upgrade/upgradeRestartRun.spec.js.map +1 -1
- package/dist/plugins/whatsapp/connector.d.ts.map +1 -1
- package/dist/plugins/whatsapp/connector.js +11 -1
- package/dist/plugins/whatsapp/connector.js.map +1 -1
- package/dist/prompts/ACTORS.md +24 -20
- package/dist/prompts/AGENTIC.md +1 -1
- package/dist/prompts/ARCHITECT.md +1 -1
- package/dist/prompts/PERMISSIONS.md +7 -2
- package/dist/prompts/REVIEWER.md +41 -0
- package/dist/prompts/SYSTEM.md +3 -5
- package/dist/sandbox/sandboxAppsAccessCheck.d.ts +12 -0
- package/dist/sandbox/sandboxAppsAccessCheck.d.ts.map +1 -0
- package/dist/sandbox/sandboxAppsAccessCheck.js +58 -0
- package/dist/sandbox/sandboxAppsAccessCheck.js.map +1 -0
- package/dist/sandbox/sandboxAppsDenyPathsBuild.d.ts +7 -0
- package/dist/sandbox/sandboxAppsDenyPathsBuild.d.ts.map +1 -0
- package/dist/sandbox/sandboxAppsDenyPathsBuild.js +44 -0
- package/dist/sandbox/sandboxAppsDenyPathsBuild.js.map +1 -0
- package/dist/sandbox/sandboxCanRead.d.ts.map +1 -1
- package/dist/sandbox/sandboxCanRead.js +5 -0
- package/dist/sandbox/sandboxCanRead.js.map +1 -1
- package/dist/sandbox/sandboxCanRead.spec.js +25 -0
- package/dist/sandbox/sandboxCanRead.spec.js.map +1 -1
- package/dist/sandbox/sandboxCanWrite.d.ts.map +1 -1
- package/dist/sandbox/sandboxCanWrite.js +5 -0
- package/dist/sandbox/sandboxCanWrite.js.map +1 -1
- package/dist/sandbox/sandboxCanWrite.spec.js +7 -0
- package/dist/sandbox/sandboxCanWrite.spec.js.map +1 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.d.ts.map +1 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.js +3 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.js.map +1 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.spec.js +37 -0
- package/dist/sandbox/sandboxFilesystemPolicyBuild.spec.js.map +1 -1
- package/dist/settings.d.ts +6 -1
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js.map +1 -1
- package/dist/skills/skills/app-creator/SKILL.md +207 -0
- package/dist/skills/skills/app-creator/references/rules-patterns.md +36 -0
- package/dist/skills/skills/app-creator/references/workflows.md +32 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/util/tagExtract.d.ts +15 -0
- package/dist/util/tagExtract.d.ts.map +1 -0
- package/dist/util/tagExtract.js +77 -0
- package/dist/util/tagExtract.js.map +1 -0
- package/dist/util/tagExtract.spec.d.ts +2 -0
- package/dist/util/tagExtract.spec.d.ts.map +1 -0
- package/dist/util/tagExtract.spec.js +92 -0
- package/dist/util/tagExtract.spec.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import { promises as fs } from "node:fs";
|
|
3
5
|
import { sandboxFilesystemPolicyBuild } from "./sandboxFilesystemPolicyBuild.js";
|
|
4
6
|
function basePermissions() {
|
|
5
7
|
return {
|
|
@@ -49,5 +51,40 @@ describe("sandboxFilesystemPolicyBuild", () => {
|
|
|
49
51
|
]));
|
|
50
52
|
expect(result.denyWrite).toEqual(result.denyRead);
|
|
51
53
|
});
|
|
54
|
+
it("denies workspace apps directory for non-app agents", () => {
|
|
55
|
+
const workingDir = path.resolve("/workspace");
|
|
56
|
+
const result = sandboxFilesystemPolicyBuild({
|
|
57
|
+
permissions: {
|
|
58
|
+
...basePermissions(),
|
|
59
|
+
workingDir
|
|
60
|
+
},
|
|
61
|
+
platform: "linux",
|
|
62
|
+
homeDir: "/home/alice"
|
|
63
|
+
});
|
|
64
|
+
expect(result.denyRead).toContain(path.resolve("/workspace/apps"));
|
|
65
|
+
expect(result.denyWrite).toContain(path.resolve("/workspace/apps"));
|
|
66
|
+
});
|
|
67
|
+
it("denies sibling app directories for app agents", async () => {
|
|
68
|
+
const workspace = await fs.mkdtemp(path.join(os.tmpdir(), "daycare-app-policy-"));
|
|
69
|
+
try {
|
|
70
|
+
await fs.mkdir(path.join(workspace, "apps", "my-app", "data"), { recursive: true });
|
|
71
|
+
await fs.mkdir(path.join(workspace, "apps", "other-app", "data"), { recursive: true });
|
|
72
|
+
const result = sandboxFilesystemPolicyBuild({
|
|
73
|
+
permissions: {
|
|
74
|
+
...basePermissions(),
|
|
75
|
+
workingDir: path.join(workspace, "apps", "my-app", "data"),
|
|
76
|
+
writeDirs: [path.join(workspace, "apps", "my-app", "data")],
|
|
77
|
+
readDirs: [workspace]
|
|
78
|
+
},
|
|
79
|
+
platform: "linux",
|
|
80
|
+
homeDir: "/home/alice"
|
|
81
|
+
});
|
|
82
|
+
expect(result.denyRead).toContain(path.join(workspace, "apps", "other-app"));
|
|
83
|
+
expect(result.denyRead).not.toContain(path.join(workspace, "apps", "my-app"));
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
await fs.rm(workspace, { recursive: true, force: true });
|
|
87
|
+
}
|
|
88
|
+
});
|
|
52
89
|
});
|
|
53
90
|
//# sourceMappingURL=sandboxFilesystemPolicyBuild.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxFilesystemPolicyBuild.spec.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxFilesystemPolicyBuild.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sandboxFilesystemPolicyBuild.spec.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxFilesystemPolicyBuild.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/settings.d.ts
CHANGED
|
@@ -29,8 +29,12 @@ export type ProviderSettings = {
|
|
|
29
29
|
export type AgentSettings = {
|
|
30
30
|
emergencyContextLimit?: number;
|
|
31
31
|
};
|
|
32
|
-
export type
|
|
32
|
+
export type SecuritySettings = {
|
|
33
|
+
appReviewerEnabled?: boolean;
|
|
34
|
+
};
|
|
35
|
+
export type ResolvedSettingsConfig = Omit<SettingsConfig, "agents" | "security"> & {
|
|
33
36
|
agents: Required<AgentSettings>;
|
|
37
|
+
security: Required<SecuritySettings>;
|
|
34
38
|
};
|
|
35
39
|
export type SettingsConfig = {
|
|
36
40
|
rlm?: boolean;
|
|
@@ -40,6 +44,7 @@ export type SettingsConfig = {
|
|
|
40
44
|
};
|
|
41
45
|
assistant?: AssistantSettings;
|
|
42
46
|
agents?: AgentSettings;
|
|
47
|
+
security?: SecuritySettings;
|
|
43
48
|
plugins?: PluginInstanceSettings[];
|
|
44
49
|
providers?: ProviderSettings[];
|
|
45
50
|
inference?: {
|
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../sources/settings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGvF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../sources/settings.ts"],"names":[],"mappings":"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"}
|
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../sources/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../sources/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: app-creator
|
|
3
|
+
description: Guide for creating effective apps. Use when users want to create a new app or update an existing app with APP.md, PERMISSIONS.md, allow and deny rules, and sandboxed execution.
|
|
4
|
+
license: Complete terms in LICENSE.txt
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# App Creator
|
|
8
|
+
|
|
9
|
+
This skill provides guidance for creating effective Daycare apps.
|
|
10
|
+
|
|
11
|
+
## About Apps
|
|
12
|
+
|
|
13
|
+
Apps are sandboxed tool wrappers discovered from
|
|
14
|
+
`workspace/apps/<app-id>/APP.md` and `workspace/apps/<app-id>/PERMISSIONS.md`.
|
|
15
|
+
Each app is exposed as a callable tool named `app_<name>`.
|
|
16
|
+
|
|
17
|
+
On invocation, an app runs as a constrained app agent and each tool call is reviewed
|
|
18
|
+
against the app's allow/deny rules before execution.
|
|
19
|
+
|
|
20
|
+
### What Apps Provide
|
|
21
|
+
|
|
22
|
+
1. Isolated capabilities with explicit boundaries
|
|
23
|
+
2. Rule-reviewed tool execution on every app tool call
|
|
24
|
+
3. Persistent app state in `data/`
|
|
25
|
+
4. Reusable app behavior via clear metadata and strict rules
|
|
26
|
+
|
|
27
|
+
## Core Principles
|
|
28
|
+
|
|
29
|
+
### Start Narrow
|
|
30
|
+
|
|
31
|
+
Default to restrictive rules and small scope. Add capabilities only when they are
|
|
32
|
+
required by real usage.
|
|
33
|
+
|
|
34
|
+
### Keep Rules Concrete
|
|
35
|
+
|
|
36
|
+
Write allow/deny rules in specific, testable language. Prefer concrete constraints
|
|
37
|
+
(paths, hosts, command families) over vague policy statements.
|
|
38
|
+
|
|
39
|
+
### Preserve Isolation
|
|
40
|
+
|
|
41
|
+
Design around Daycare app boundaries:
|
|
42
|
+
|
|
43
|
+
- App writes only to `workspace/apps/<app-id>/data/`
|
|
44
|
+
- App manifest and bundled files are read-only to the app
|
|
45
|
+
- Non-app agents should not read/write app directories
|
|
46
|
+
|
|
47
|
+
## Anatomy of an App
|
|
48
|
+
|
|
49
|
+
Every app consists of required `APP.md` and `PERMISSIONS.md` files plus optional bundled resources:
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
app-id/
|
|
53
|
+
├── APP.md (required)
|
|
54
|
+
│ ├── YAML frontmatter (required)
|
|
55
|
+
│ │ ├── name: (required, username-style; this is the app id)
|
|
56
|
+
│ │ ├── title: (required, human-readable)
|
|
57
|
+
│ │ ├── description: (required)
|
|
58
|
+
│ │ └── model: (optional)
|
|
59
|
+
│ └── Markdown body (required)
|
|
60
|
+
│ └── Full body is system prompt
|
|
61
|
+
├── PERMISSIONS.md (required)
|
|
62
|
+
│ └── Markdown body (required)
|
|
63
|
+
│ ├── ## Source Intent
|
|
64
|
+
│ └── ## Rules
|
|
65
|
+
│ ├── ### Allow
|
|
66
|
+
│ └── ### Deny
|
|
67
|
+
├── data/ (required runtime writable state)
|
|
68
|
+
└── scripts/ (optional read-only helpers)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### APP.md (required)
|
|
72
|
+
|
|
73
|
+
Every `APP.md` consists of:
|
|
74
|
+
|
|
75
|
+
- **Frontmatter** (YAML): `name`, `title`, `description`, optional `model`.
|
|
76
|
+
- **Body** (Markdown): full body is the system prompt.
|
|
77
|
+
|
|
78
|
+
When parsing or writing `APP.md`:
|
|
79
|
+
|
|
80
|
+
- Never parse frontmatter manually
|
|
81
|
+
- Never write frontmatter manually
|
|
82
|
+
- Always use `gray-matter` for parse and stringify flows
|
|
83
|
+
|
|
84
|
+
### Example APP.md
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
---
|
|
88
|
+
name: github-reviewer
|
|
89
|
+
title: GitHub Reviewer
|
|
90
|
+
description: Reviews pull requests and drafts feedback
|
|
91
|
+
model: default
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
You review pull requests and provide concrete, actionable feedback.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Example PERMISSIONS.md
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
## Source Intent
|
|
101
|
+
|
|
102
|
+
Review pull requests and draft actionable feedback while preserving repository safety.
|
|
103
|
+
|
|
104
|
+
## Rules
|
|
105
|
+
|
|
106
|
+
### Allow
|
|
107
|
+
- Read files in the workspace
|
|
108
|
+
- Run read-only git commands
|
|
109
|
+
|
|
110
|
+
### Deny
|
|
111
|
+
- Write outside data/
|
|
112
|
+
- Delete files
|
|
113
|
+
- Rewrite git history
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## App Creation Process
|
|
117
|
+
|
|
118
|
+
App creation involves these steps:
|
|
119
|
+
|
|
120
|
+
1. Understand concrete app use cases
|
|
121
|
+
2. Plan boundaries and reusable app resources
|
|
122
|
+
3. Initialize the app in workspace
|
|
123
|
+
4. Edit `APP.md`, `PERMISSIONS.md`, and app resources
|
|
124
|
+
5. Validate behavior and safety
|
|
125
|
+
6. Iterate based on real usage
|
|
126
|
+
|
|
127
|
+
Follow these steps in order, skipping only if there is a clear reason.
|
|
128
|
+
|
|
129
|
+
### Step 1: Understand with Concrete Examples
|
|
130
|
+
|
|
131
|
+
Collect examples that should be handled by the app and examples that should be denied
|
|
132
|
+
or handled elsewhere.
|
|
133
|
+
|
|
134
|
+
Capture:
|
|
135
|
+
|
|
136
|
+
- expected input/output shape
|
|
137
|
+
- required tool classes (`read`, `write`, `edit`, `exec`)
|
|
138
|
+
- safety boundaries and failure modes
|
|
139
|
+
|
|
140
|
+
### Step 2: Plan Boundaries and Resources
|
|
141
|
+
|
|
142
|
+
Before creating files, define:
|
|
143
|
+
|
|
144
|
+
- app id and scope
|
|
145
|
+
- success criteria
|
|
146
|
+
- rule matrix (allow/deny/conditional)
|
|
147
|
+
- persistent state model for `data/`
|
|
148
|
+
|
|
149
|
+
Consult references:
|
|
150
|
+
|
|
151
|
+
- **Workflow design**: `references/workflows.md`
|
|
152
|
+
- **Rule design and anti-patterns**: `references/rules-patterns.md`
|
|
153
|
+
|
|
154
|
+
### Step 3: Initialize App in Workspace
|
|
155
|
+
|
|
156
|
+
Create the app structure:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
mkdir -p workspace/apps/<app-id>/data
|
|
160
|
+
mkdir -p workspace/apps/<app-id>/scripts
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Then create `APP.md` and `PERMISSIONS.md` with required sections.
|
|
164
|
+
|
|
165
|
+
### Step 4: Edit APP.md, PERMISSIONS.md, and Resources
|
|
166
|
+
|
|
167
|
+
Write clear metadata in `APP.md` and clear source intent + allow/deny rules in `PERMISSIONS.md`.
|
|
168
|
+
|
|
169
|
+
If scripts are needed, keep them minimal and app-specific.
|
|
170
|
+
|
|
171
|
+
### Step 5: Validate Behavior and Safety
|
|
172
|
+
|
|
173
|
+
Validation checklist:
|
|
174
|
+
|
|
175
|
+
- Frontmatter has valid `name`, `title`, `description` (optional `model`)
|
|
176
|
+
- APP.md body is non-empty and contains the system prompt
|
|
177
|
+
- Tool name maps cleanly to `app_<name>`
|
|
178
|
+
- Writes are limited to `data/`
|
|
179
|
+
- Allow rules cover intended workflows
|
|
180
|
+
- Deny rules block destructive actions
|
|
181
|
+
- Error messages are actionable when calls are denied
|
|
182
|
+
|
|
183
|
+
Run tests and typecheck after changes.
|
|
184
|
+
|
|
185
|
+
### Step 6: Iterate
|
|
186
|
+
|
|
187
|
+
After real usage:
|
|
188
|
+
|
|
189
|
+
1. Capture failures and unnecessary denials
|
|
190
|
+
2. Tighten prompt and rules
|
|
191
|
+
3. Re-test representative workflows
|
|
192
|
+
4. Keep changes small and reversible
|
|
193
|
+
|
|
194
|
+
## Practical Guidance
|
|
195
|
+
|
|
196
|
+
### Keep Apps Single-Purpose
|
|
197
|
+
|
|
198
|
+
If one app starts owning unrelated workflows, split it into multiple apps.
|
|
199
|
+
|
|
200
|
+
### Prefer Stable Rules
|
|
201
|
+
|
|
202
|
+
Write rules that remain understandable months later and are tied to observable behavior.
|
|
203
|
+
|
|
204
|
+
### Keep Runtime Rule Changes Aligned
|
|
205
|
+
|
|
206
|
+
If rules are modified at runtime via app rule tools, keep `PERMISSIONS.md` and runtime
|
|
207
|
+
behavior consistent.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# App Rules Patterns
|
|
2
|
+
|
|
3
|
+
Use this reference when writing `## Rules` sections in `PERMISSIONS.md`.
|
|
4
|
+
|
|
5
|
+
## Rule writing checklist
|
|
6
|
+
|
|
7
|
+
- Keep one constraint per rule line.
|
|
8
|
+
- Use concrete nouns and verbs.
|
|
9
|
+
- Prefer explicit path and host constraints.
|
|
10
|
+
- State prohibited destructive operations directly.
|
|
11
|
+
- Avoid broad, ambiguous phrases.
|
|
12
|
+
|
|
13
|
+
## Good allow examples
|
|
14
|
+
|
|
15
|
+
- Allow reading files under workspace root.
|
|
16
|
+
- Allow running `git status`, `git diff`, and `git show`.
|
|
17
|
+
- Allow writing only under `workspace/apps/<app-id>/data/`.
|
|
18
|
+
|
|
19
|
+
## Good deny examples
|
|
20
|
+
|
|
21
|
+
- Deny deleting files.
|
|
22
|
+
- Deny changing git history (`git reset`, `git rebase`, forced pushes).
|
|
23
|
+
- Deny writes outside `data/`.
|
|
24
|
+
- Deny network access except approved hosts.
|
|
25
|
+
|
|
26
|
+
## Anti-patterns
|
|
27
|
+
|
|
28
|
+
- "Be safe."
|
|
29
|
+
- "Only do reasonable things."
|
|
30
|
+
- "Avoid dangerous commands when possible."
|
|
31
|
+
|
|
32
|
+
These are hard to evaluate consistently and should be replaced with explicit constraints.
|
|
33
|
+
|
|
34
|
+
## Reviewability heuristic
|
|
35
|
+
|
|
36
|
+
A rule is strong when a reviewer can answer "allowed or denied?" without guessing.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# App Workflows
|
|
2
|
+
|
|
3
|
+
Use this reference when designing end-to-end app workflows from user prompt to final result.
|
|
4
|
+
|
|
5
|
+
## Minimal workflow pattern
|
|
6
|
+
|
|
7
|
+
1. Define the task in one sentence.
|
|
8
|
+
2. Identify required tools and data reads.
|
|
9
|
+
3. Apply allow/deny constraints before execution.
|
|
10
|
+
4. Execute tool calls through review middleware.
|
|
11
|
+
5. Return concise final output with rationale.
|
|
12
|
+
|
|
13
|
+
## Decision checkpoints
|
|
14
|
+
|
|
15
|
+
- **Before first call**: Is the requested action in app scope?
|
|
16
|
+
- **Before each tool call**: Does allow/deny policy permit it?
|
|
17
|
+
- **After denial**: Can the app adapt with a safer alternative?
|
|
18
|
+
- **Before response**: Is output complete and actionable?
|
|
19
|
+
|
|
20
|
+
## Escalation pattern
|
|
21
|
+
|
|
22
|
+
If the app cannot complete safely:
|
|
23
|
+
|
|
24
|
+
1. Explain what was blocked.
|
|
25
|
+
2. Explain why it was blocked.
|
|
26
|
+
3. Offer a safe alternative path.
|
|
27
|
+
|
|
28
|
+
## Stable workflow guidance
|
|
29
|
+
|
|
30
|
+
- Prefer deterministic steps over open-ended exploration.
|
|
31
|
+
- Keep tool-call count low for predictable latency.
|
|
32
|
+
- Avoid mixing unrelated responsibilities in one app flow.
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type { SessionPermissions } from "./engine/permissions.js";
|
|
2
2
|
export type { ExecGateDefinition } from "./engine/scheduling/execGateTypes.js";
|
|
3
3
|
export type { SandboxPackageManager } from "./sandbox/sandboxPackageManagers.js";
|
|
4
|
-
export type { Connector, ConnectorCapabilities, ConnectorFile, ConnectorFileDisposition, ConnectorFileMode, ConnectorMessage, CommandHandler, CommandUnsubscribe, MessageContext, MessageHandler, MessageUnsubscribe, PluginCommandDefinition, PermissionAccess, PermissionEntry, PermissionDecision, PermissionHandler, PermissionKind, PermissionRequest, SlashCommandEntry } from "./engine/modules/connectors/types.js";
|
|
4
|
+
export type { Connector, ConnectorCapabilities, ConnectorFile, ConnectorFileDisposition, ConnectorFileMode, ConnectorMessage, CommandHandler, CommandUnsubscribe, MessageContext, MessageHandler, MessageUnsubscribe, PluginCommandDefinition, PermissionAccess, PermissionEntry, PermissionDecision, PermissionHandler, PermissionKind, PermissionRequestScope, PermissionRequest, SlashCommandEntry } from "./engine/modules/connectors/types.js";
|
|
5
5
|
export type { FileReference } from "./files/types.js";
|
|
6
6
|
export type { PluginApi, PluginInstance, PluginModule, PluginOnboardingApi, PluginOnboardingResult } from "./engine/plugins/types.js";
|
|
7
7
|
export type { AgentMessage, AgentState, AgentTokenEntry, AgentTokenSize, AgentTokenSnapshotSize, AgentTokenStats, AgentLifecycleState, AgentHistoryRecord, AgentInboxItem, AgentInboxResult, AgentPostTarget, BackgroundAgentState } from "./engine/agents/ops/agentTypes.js";
|
|
@@ -13,4 +13,5 @@ export type { AgentSkill } from "./engine/skills/skillTypes.js";
|
|
|
13
13
|
export type { Config } from "./config/configTypes.js";
|
|
14
14
|
export type { Signal, DelayedSignal, DelayedSignalCancelRepeatKeyInput, DelayedSignalScheduleInput, SignalGenerateInput, SignalSource, SignalSubscription, SignalSubscribeInput, SignalUnsubscribeInput } from "./engine/signals/signalTypes.js";
|
|
15
15
|
export type { Channel, ChannelMember, ChannelMessage, ChannelSignalData } from "./engine/channels/channelTypes.js";
|
|
16
|
+
export type { AppDescriptor, AppManifest, AppPermissions, AppReviewDecision, AppRule, AppRuleSet } from "./engine/apps/appTypes.js";
|
|
16
17
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../sources/types.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,YAAY,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAGjF,YAAY,EACV,SAAS,EACT,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAG9C,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,YAAY,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGvG,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,qCAAqC,CAAC;AAG7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAGhF,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,YAAY,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,YAAY,EACV,MAAM,EACN,aAAa,EACb,iCAAiC,EACjC,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,iBAAiB,EAClB,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../sources/types.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,YAAY,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAGjF,YAAY,EACV,SAAS,EACT,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAG9C,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,YAAY,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGvG,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,qCAAqC,CAAC;AAG7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAGhF,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,YAAY,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,YAAY,EACV,MAAM,EACN,aAAa,EACb,iCAAiC,EACjC,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,iBAAiB,EAClB,MAAM,mCAAmC,CAAC;AAG3C,YAAY,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,UAAU,EACX,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the content between the first opening and last closing occurrence
|
|
3
|
+
* of an XML-like tag in text. Case-insensitive tag matching. Opening tag may
|
|
4
|
+
* include attributes (e.g. `<response foo="bar">`). Content is returned
|
|
5
|
+
* unmodified except for leading/trailing whitespace trimming.
|
|
6
|
+
*
|
|
7
|
+
* Returns null if either the opening or closing tag is missing.
|
|
8
|
+
*/
|
|
9
|
+
export declare function tagExtract(text: string, tag: string): string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Removes the matched tag block (first open to last close, inclusive) from text.
|
|
12
|
+
* Returns the remaining text. If no complete tag block is found, returns text unchanged.
|
|
13
|
+
*/
|
|
14
|
+
export declare function tagStrip(text: string, tag: string): string;
|
|
15
|
+
//# sourceMappingURL=tagExtract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagExtract.d.ts","sourceRoot":"","sources":["../../sources/util/tagExtract.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBnE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAuB1D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the content between the first opening and last closing occurrence
|
|
3
|
+
* of an XML-like tag in text. Case-insensitive tag matching. Opening tag may
|
|
4
|
+
* include attributes (e.g. `<response foo="bar">`). Content is returned
|
|
5
|
+
* unmodified except for leading/trailing whitespace trimming.
|
|
6
|
+
*
|
|
7
|
+
* Returns null if either the opening or closing tag is missing.
|
|
8
|
+
*/
|
|
9
|
+
export function tagExtract(text, tag) {
|
|
10
|
+
const openIndex = findOpenTag(text, tag);
|
|
11
|
+
if (openIndex === -1) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
// Find end of the opening tag (the closing `>`)
|
|
15
|
+
const openTagEnd = text.indexOf(">", openIndex);
|
|
16
|
+
if (openTagEnd === -1) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const contentStart = openTagEnd + 1;
|
|
20
|
+
const closeIndex = findLastCloseTag(text, tag);
|
|
21
|
+
if (closeIndex === -1 || closeIndex < contentStart) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return text.slice(contentStart, closeIndex).trim();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Removes the matched tag block (first open to last close, inclusive) from text.
|
|
28
|
+
* Returns the remaining text. If no complete tag block is found, returns text unchanged.
|
|
29
|
+
*/
|
|
30
|
+
export function tagStrip(text, tag) {
|
|
31
|
+
const openIndex = findOpenTag(text, tag);
|
|
32
|
+
if (openIndex === -1) {
|
|
33
|
+
return text;
|
|
34
|
+
}
|
|
35
|
+
const closeIndex = findLastCloseTag(text, tag);
|
|
36
|
+
if (closeIndex === -1) {
|
|
37
|
+
return text;
|
|
38
|
+
}
|
|
39
|
+
const closeTag = buildCloseTagPattern(tag);
|
|
40
|
+
const closeMatch = text.slice(closeIndex).match(closeTag);
|
|
41
|
+
if (!closeMatch) {
|
|
42
|
+
return text;
|
|
43
|
+
}
|
|
44
|
+
const blockEnd = closeIndex + closeMatch[0].length;
|
|
45
|
+
if (blockEnd <= openIndex) {
|
|
46
|
+
return text;
|
|
47
|
+
}
|
|
48
|
+
return text.slice(0, openIndex) + text.slice(blockEnd);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Finds the index of the first opening tag occurrence (case-insensitive).
|
|
52
|
+
* Matches `<tag>` or `<tag ...>` (with attributes).
|
|
53
|
+
*/
|
|
54
|
+
function findOpenTag(text, tag) {
|
|
55
|
+
const pattern = new RegExp(`<${escapeRegExp(tag)}(\\s[^>]*)?>`, "i");
|
|
56
|
+
const match = text.match(pattern);
|
|
57
|
+
return match ? match.index : -1;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Finds the index of the last closing tag occurrence (case-insensitive).
|
|
61
|
+
*/
|
|
62
|
+
function findLastCloseTag(text, tag) {
|
|
63
|
+
const pattern = buildCloseTagPattern(tag);
|
|
64
|
+
let lastIndex = -1;
|
|
65
|
+
let match;
|
|
66
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
67
|
+
lastIndex = match.index;
|
|
68
|
+
}
|
|
69
|
+
return lastIndex;
|
|
70
|
+
}
|
|
71
|
+
function buildCloseTagPattern(tag) {
|
|
72
|
+
return new RegExp(`</${escapeRegExp(tag)}\\s*>`, "gi");
|
|
73
|
+
}
|
|
74
|
+
function escapeRegExp(value) {
|
|
75
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=tagExtract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagExtract.js","sourceRoot":"","sources":["../../sources/util/tagExtract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagExtract.spec.d.ts","sourceRoot":"","sources":["../../sources/util/tagExtract.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { tagExtract, tagStrip } from "./tagExtract.js";
|
|
3
|
+
describe("tagExtract", () => {
|
|
4
|
+
it("extracts basic content", () => {
|
|
5
|
+
expect(tagExtract("<response>hello</response>", "response")).toBe("hello");
|
|
6
|
+
});
|
|
7
|
+
it("returns null when open tag is missing", () => {
|
|
8
|
+
expect(tagExtract("hello</response>", "response")).toBeNull();
|
|
9
|
+
});
|
|
10
|
+
it("returns null when close tag is missing", () => {
|
|
11
|
+
expect(tagExtract("<response>hello", "response")).toBeNull();
|
|
12
|
+
});
|
|
13
|
+
it("returns empty string for empty content", () => {
|
|
14
|
+
expect(tagExtract("<response></response>", "response")).toBe("");
|
|
15
|
+
});
|
|
16
|
+
it("handles case-insensitive tags", () => {
|
|
17
|
+
expect(tagExtract("<Response>hello</Response>", "response")).toBe("hello");
|
|
18
|
+
expect(tagExtract("<RESPONSE>hello</RESPONSE>", "response")).toBe("hello");
|
|
19
|
+
expect(tagExtract("<rEsPoNsE>hello</rEsPoNsE>", "response")).toBe("hello");
|
|
20
|
+
});
|
|
21
|
+
it("handles mixed-case open and close", () => {
|
|
22
|
+
expect(tagExtract("<Response>hello</response>", "response")).toBe("hello");
|
|
23
|
+
expect(tagExtract("<response>hello</RESPONSE>", "response")).toBe("hello");
|
|
24
|
+
});
|
|
25
|
+
it("handles tags with attributes", () => {
|
|
26
|
+
expect(tagExtract('<response foo="bar">content</response>', "response")).toBe("content");
|
|
27
|
+
expect(tagExtract('<response type="final" id="1">content</response>', "response")).toBe("content");
|
|
28
|
+
});
|
|
29
|
+
it("preserves inner tags unmodified", () => {
|
|
30
|
+
expect(tagExtract("<response>has <inner> tags</response>", "response")).toBe("has <inner> tags");
|
|
31
|
+
});
|
|
32
|
+
it("uses first open and last close for multiple occurrences", () => {
|
|
33
|
+
const text = "<response>outer <response>inner</response> middle</response> end";
|
|
34
|
+
expect(tagExtract(text, "response")).toBe("outer <response>inner</response> middle");
|
|
35
|
+
});
|
|
36
|
+
it("preserves multiline content", () => {
|
|
37
|
+
const text = "<response>\nline 1\nline 2\nline 3\n</response>";
|
|
38
|
+
expect(tagExtract(text, "response")).toBe("line 1\nline 2\nline 3");
|
|
39
|
+
});
|
|
40
|
+
it("trims leading and trailing whitespace only", () => {
|
|
41
|
+
expect(tagExtract("<response> hello world </response>", "response")).toBe("hello world");
|
|
42
|
+
});
|
|
43
|
+
it("preserves internal whitespace", () => {
|
|
44
|
+
expect(tagExtract("<response>hello world</response>", "response")).toBe("hello world");
|
|
45
|
+
});
|
|
46
|
+
it("handles text before and after the tag block", () => {
|
|
47
|
+
expect(tagExtract("prefix <response>content</response> suffix", "response")).toBe("content");
|
|
48
|
+
});
|
|
49
|
+
it("works with different tag names", () => {
|
|
50
|
+
expect(tagExtract("<result>data</result>", "result")).toBe("data");
|
|
51
|
+
expect(tagExtract("<output>data</output>", "output")).toBe("data");
|
|
52
|
+
expect(tagExtract("<answer>data</answer>", "answer")).toBe("data");
|
|
53
|
+
});
|
|
54
|
+
it("returns null when close tag appears before open tag content start", () => {
|
|
55
|
+
expect(tagExtract("</response><response>hello", "response")).toBeNull();
|
|
56
|
+
});
|
|
57
|
+
it("handles whitespace in close tag", () => {
|
|
58
|
+
expect(tagExtract("<response>hello</response >", "response")).toBe("hello");
|
|
59
|
+
expect(tagExtract("<response>hello</ response>", "response")).toBeNull();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe("tagStrip", () => {
|
|
63
|
+
it("removes the tag block from text", () => {
|
|
64
|
+
expect(tagStrip("prefix <response>content</response> suffix", "response")).toBe("prefix suffix");
|
|
65
|
+
});
|
|
66
|
+
it("returns text unchanged when no tag found", () => {
|
|
67
|
+
const text = "no tags here";
|
|
68
|
+
expect(tagStrip(text, "response")).toBe(text);
|
|
69
|
+
});
|
|
70
|
+
it("handles tag at start of text", () => {
|
|
71
|
+
expect(tagStrip("<response>content</response> suffix", "response")).toBe(" suffix");
|
|
72
|
+
});
|
|
73
|
+
it("handles tag at end of text", () => {
|
|
74
|
+
expect(tagStrip("prefix <response>content</response>", "response")).toBe("prefix ");
|
|
75
|
+
});
|
|
76
|
+
it("removes entire text when tag is the whole text", () => {
|
|
77
|
+
expect(tagStrip("<response>content</response>", "response")).toBe("");
|
|
78
|
+
});
|
|
79
|
+
it("uses first open and last close", () => {
|
|
80
|
+
expect(tagStrip("before <response>a</response> mid <response>b</response> after", "response")).toBe("before after");
|
|
81
|
+
});
|
|
82
|
+
it("handles case-insensitive tags", () => {
|
|
83
|
+
expect(tagStrip("x<Response>y</Response>z", "response")).toBe("xz");
|
|
84
|
+
});
|
|
85
|
+
it("returns text when only open tag present", () => {
|
|
86
|
+
expect(tagStrip("<response>hello", "response")).toBe("<response>hello");
|
|
87
|
+
});
|
|
88
|
+
it("returns text when only close tag present", () => {
|
|
89
|
+
expect(tagStrip("hello</response>", "response")).toBe("hello</response>");
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=tagExtract.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagExtract.spec.js","sourceRoot":"","sources":["../../sources/util/tagExtract.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEvD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,UAAU,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,UAAU,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,UAAU,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,UAAU,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,UAAU,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,UAAU,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,UAAU,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzF,MAAM,CAAC,UAAU,CAAC,kDAAkD,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CACrF,SAAS,CACV,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,UAAU,CAAC,uCAAuC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAC1E,kBAAkB,CACnB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,IAAI,GAAG,kEAAkE,CAAC;QAChF,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CACvC,yCAAyC,CAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAAG,iDAAiD,CAAC;QAC/D,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,UAAU,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,UAAU,CAAC,oCAAoC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,UAAU,CAAC,4CAA4C,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,UAAU,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,UAAU,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5E,MAAM,CAAC,UAAU,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,QAAQ,CAAC,4CAA4C,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAC7E,gBAAgB,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,cAAc,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,QAAQ,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,QAAQ,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,QAAQ,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CACJ,QAAQ,CAAC,gEAAgE,EAAE,UAAU,CAAC,CACvF,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|