@the-ai-company/cbio-node-runtime 1.58.0 → 1.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +55 -24
  2. package/dist/clients/agent/client.d.ts +9 -1
  3. package/dist/clients/agent/client.js +41 -11
  4. package/dist/clients/agent/client.js.map +1 -1
  5. package/dist/clients/agent/contracts.d.ts +5 -2
  6. package/dist/clients/owner/client.d.ts +15 -11
  7. package/dist/clients/owner/client.js +83 -30
  8. package/dist/clients/owner/client.js.map +1 -1
  9. package/dist/clients/owner/contracts.d.ts +32 -22
  10. package/dist/clients/owner/index.d.ts +1 -1
  11. package/dist/runtime/index.d.ts +1 -1
  12. package/dist/vault-core/contracts.d.ts +204 -26
  13. package/dist/vault-core/contracts.js +6 -2
  14. package/dist/vault-core/contracts.js.map +1 -1
  15. package/dist/vault-core/core.d.ts +23 -4
  16. package/dist/vault-core/core.js +480 -121
  17. package/dist/vault-core/core.js.map +1 -1
  18. package/dist/vault-core/defaults.d.ts +9 -2
  19. package/dist/vault-core/defaults.js +41 -14
  20. package/dist/vault-core/defaults.js.map +1 -1
  21. package/dist/vault-core/index.d.ts +1 -1
  22. package/dist/vault-core/index.js.map +1 -1
  23. package/dist/vault-core/persistence.d.ts +12 -2
  24. package/dist/vault-core/persistence.js +43 -4
  25. package/dist/vault-core/persistence.js.map +1 -1
  26. package/dist/vault-core/ports.d.ts +7 -1
  27. package/dist/vault-core/tool-metadata.js +27 -10
  28. package/dist/vault-core/tool-metadata.js.map +1 -1
  29. package/dist/vault-ingress/defaults.d.ts +2 -0
  30. package/dist/vault-ingress/defaults.js +6 -0
  31. package/dist/vault-ingress/defaults.js.map +1 -1
  32. package/dist/vault-ingress/index.d.ts +54 -9
  33. package/dist/vault-ingress/index.js +160 -46
  34. package/dist/vault-ingress/index.js.map +1 -1
  35. package/dist/vault-ingress/remote-transport.d.ts +2 -0
  36. package/dist/vault-ingress/remote-transport.js +33 -4
  37. package/dist/vault-ingress/remote-transport.js.map +1 -1
  38. package/docs/ARCHITECTURE.md +1 -1
  39. package/docs/REFERENCE.md +43 -30
  40. package/docs/WORKS_WITH_CUSTOM_FETCH.md +2 -2
  41. package/docs/api/README.md +5 -5
  42. package/docs/api/classes/IdentityError.md +1 -1
  43. package/docs/api/classes/OwnerClientError.md +1 -1
  44. package/docs/api/classes/VaultCore.md +176 -16
  45. package/docs/api/classes/VaultCoreError.md +1 -1
  46. package/docs/api/enumerations/IdentityErrorCode.md +1 -1
  47. package/docs/api/enumerations/OwnerClientErrorCode.md +1 -1
  48. package/docs/api/functions/createAgentClient.md +1 -1
  49. package/docs/api/functions/createIdentity.md +1 -1
  50. package/docs/api/functions/createOwnerHttpFlowBoundary.md +1 -1
  51. package/docs/api/functions/createOwnerSession.md +1 -1
  52. package/docs/api/functions/createPersistentVaultCoreDependencies.md +1 -1
  53. package/docs/api/functions/createStandardAcquireBoundary.md +1 -1
  54. package/docs/api/functions/createStandardDispatchBoundary.md +1 -1
  55. package/docs/api/functions/createVault.md +1 -1
  56. package/docs/api/functions/createVaultClient.md +1 -1
  57. package/docs/api/functions/createVaultCore.md +1 -1
  58. package/docs/api/functions/createVaultCoreDependencies.md +1 -1
  59. package/docs/api/functions/createVaultService.md +1 -1
  60. package/docs/api/functions/createWorkspaceStorage.md +1 -1
  61. package/docs/api/functions/deriveIdentityId.md +1 -1
  62. package/docs/api/functions/deriveVaultWorkingKeyFromPassword.md +1 -1
  63. package/docs/api/functions/getDefaultWorkspaceDir.md +1 -1
  64. package/docs/api/functions/handleVaultAgentControlHttp.md +1 -1
  65. package/docs/api/functions/handleVaultHttpDispatch.md +1 -1
  66. package/docs/api/functions/initializeVaultCustody.md +1 -1
  67. package/docs/api/functions/listVaults.md +1 -1
  68. package/docs/api/functions/readVaultProfile.md +1 -1
  69. package/docs/api/functions/recoverVault.md +1 -1
  70. package/docs/api/functions/recoverVaultWorkingKey.md +1 -1
  71. package/docs/api/functions/restoreIdentity.md +1 -1
  72. package/docs/api/functions/updateVaultMetadata.md +1 -1
  73. package/docs/api/functions/wrapVaultCoreAsVaultService.md +1 -1
  74. package/docs/api/functions/writeVaultProfile.md +1 -1
  75. package/docs/api/interfaces/AgentClient.md +33 -1
  76. package/docs/api/interfaces/AgentDispatchIntent.md +1 -1
  77. package/docs/api/interfaces/AgentDispatchTransport.md +33 -1
  78. package/docs/api/interfaces/AgentIdentity.md +1 -1
  79. package/docs/api/interfaces/AgentSigner.md +1 -1
  80. package/docs/api/interfaces/AgentSubmitCapabilityRequestInput.md +9 -9
  81. package/docs/api/interfaces/CbioRuntime.md +1 -1
  82. package/docs/api/interfaces/CreateAgentClientOptions.md +1 -1
  83. package/docs/api/interfaces/CreateIdentityOptions.md +1 -1
  84. package/docs/api/interfaces/CreateOwnerSessionOptions.md +1 -1
  85. package/docs/api/interfaces/CreatePersistentVaultCoreDependenciesOptions.md +1 -1
  86. package/docs/api/interfaces/CreateVaultClientOptions.md +1 -1
  87. package/docs/api/interfaces/CreateVaultOptions.md +1 -1
  88. package/docs/api/interfaces/CreatedVault.md +1 -1
  89. package/docs/api/interfaces/DefaultPolicyEngineOptions.md +1 -1
  90. package/docs/api/interfaces/IStorageProvider.md +1 -1
  91. package/docs/api/interfaces/InitializeVaultCustodyOptions.md +1 -1
  92. package/docs/api/interfaces/InitializedVaultCustody.md +1 -1
  93. package/docs/api/interfaces/OwnerAgentProvisionResult.md +1 -1
  94. package/docs/api/interfaces/{OwnerStoreSecretInput.md → OwnerCreateSecretInput.md} +2 -2
  95. package/docs/api/interfaces/{VaultDeleteSecretInput.md → OwnerRemoveSecretInput.md} +2 -2
  96. package/docs/api/interfaces/OwnerSensitiveActionConfirmation.md +1 -1
  97. package/docs/api/interfaces/OwnerSensitiveActionContext.md +1 -1
  98. package/docs/api/interfaces/OwnerSession.md +1 -1
  99. package/docs/api/interfaces/{OwnerWriteSecretInput.md → OwnerUpdateSecretInput.md} +2 -2
  100. package/docs/api/interfaces/RecoverVaultOptions.md +1 -1
  101. package/docs/api/interfaces/RecoveredVault.md +1 -1
  102. package/docs/api/interfaces/RestoreIdentityOptions.md +1 -1
  103. package/docs/api/interfaces/Signer.md +1 -1
  104. package/docs/api/interfaces/VaultApproveCapabilityRequestInput.md +1 -1
  105. package/docs/api/interfaces/VaultApproveDispatchInput.md +1 -1
  106. package/docs/api/interfaces/VaultAuditQueryInput.md +1 -1
  107. package/docs/api/interfaces/VaultClient.md +112 -48
  108. package/docs/api/interfaces/VaultCoreDependenciesOptions.md +1 -1
  109. package/docs/api/interfaces/VaultCreateAgentInput.md +1 -1
  110. package/docs/api/interfaces/VaultExportSecretInput.md +1 -1
  111. package/docs/api/interfaces/VaultGrantCapabilityInput.md +9 -21
  112. package/docs/api/interfaces/VaultGrantCapabilityRequest.md +1 -1
  113. package/docs/api/interfaces/VaultIdentity.md +1 -1
  114. package/docs/api/interfaces/VaultImportAgentInput.md +1 -1
  115. package/docs/api/interfaces/VaultIssueSessionTokenInput.md +1 -1
  116. package/docs/api/interfaces/VaultListAgentsInput.md +1 -1
  117. package/docs/api/interfaces/VaultListCapabilitiesInput.md +1 -1
  118. package/docs/api/interfaces/VaultListSecretsInput.md +1 -1
  119. package/docs/api/interfaces/VaultMetadata.md +1 -1
  120. package/docs/api/interfaces/VaultObject.md +1 -1
  121. package/docs/api/interfaces/VaultProfile.md +1 -1
  122. package/docs/api/interfaces/VaultReadAgentPrivateKeyInput.md +1 -1
  123. package/docs/api/interfaces/VaultReadSecretPlaintextInput.md +1 -1
  124. package/docs/api/interfaces/VaultRegisterFlowInput.md +1 -1
  125. package/docs/api/interfaces/VaultRevokeCapabilityInput.md +1 -1
  126. package/docs/api/interfaces/VaultRevokeSessionTokenInput.md +1 -1
  127. package/docs/api/interfaces/VaultSigner.md +1 -1
  128. package/docs/api/interfaces/VaultSubmitCapabilityRequestInput.md +11 -17
  129. package/docs/api/interfaces/VaultUpdateAgentInput.md +1 -1
  130. package/docs/api/type-aliases/AgentCapabilityEnvelope.md +1 -1
  131. package/docs/api/type-aliases/AgentVisibleSecretRecord.md +1 -1
  132. package/docs/api/type-aliases/CbioRuntimeModule.md +1 -1
  133. package/docs/api/type-aliases/OwnerGrantCapabilityInput.md +1 -1
  134. package/docs/api/variables/DEFAULT_VAULT_KEY_CUSTODY_BLOB_KEY.md +1 -1
  135. package/docs/zh/README.md +27 -9
  136. package/examples/process-isolation.ts +6 -4
  137. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -6,6 +6,9 @@
6
6
 
7
7
  A client for agents to perform authorized operations (e.g., dispatch HTTP requests with secrets).
8
8
  This client uses a delegated capability granted by the owner.
9
+ Agents can use secrets and request broader access, but they do not directly manage
10
+ the secret lifecycle inside the vault. Newly obtained credentials are persisted only
11
+ through owner actions or owner-configured vault flows that explicitly capture them.
9
12
 
10
13
  ## Methods
11
14
 
@@ -42,12 +45,31 @@ const result = await agent.agentDispatch({
42
45
 
43
46
  ***
44
47
 
48
+ ### agentGetRequest()
49
+
50
+ > **agentGetRequest**(`requestId`): `Promise`\<`AgentRequestResult`\>
51
+
52
+ #### Parameters
53
+
54
+ ##### requestId
55
+
56
+ `string`
57
+
58
+ #### Returns
59
+
60
+ `Promise`\<`AgentRequestResult`\>
61
+
62
+ ***
63
+
45
64
  ### agentIntrospect()
46
65
 
47
66
  > **agentIntrospect**(): `Promise`\<`AgentRuntimeManifest`\>
48
67
 
49
68
  Introspects the current runtime environment, providing identity, capabilities, and a toolbox manifest.
50
69
  Equivalent to '--help' or 'llms.txt' for the agent.
70
+ This is the primary place where an agent should learn its operational boundary:
71
+ it can use existing secrets and request more permission, but it cannot directly
72
+ create, update, or remove secrets in the vault.
51
73
 
52
74
  #### Returns
53
75
 
@@ -65,6 +87,16 @@ Equivalent to '--help' or 'llms.txt' for the agent.
65
87
 
66
88
  ***
67
89
 
90
+ ### agentListRequests()
91
+
92
+ > **agentListRequests**(): `Promise`\<readonly `AgentVisibleRequestRecord`[]\>
93
+
94
+ #### Returns
95
+
96
+ `Promise`\<readonly `AgentVisibleRequestRecord`[]\>
97
+
98
+ ***
99
+
68
100
  ### agentListSecrets()
69
101
 
70
102
  > **agentListSecrets**(): `Promise`\<readonly `AgentVisibleSecretRecord`[]\>
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -22,6 +22,22 @@
22
22
 
23
23
  ***
24
24
 
25
+ ### agentGetRequest()
26
+
27
+ > **agentGetRequest**(`request`): `Promise`\<`AgentRequestResult`\>
28
+
29
+ #### Parameters
30
+
31
+ ##### request
32
+
33
+ `AgentGetRequestRequest`
34
+
35
+ #### Returns
36
+
37
+ `Promise`\<`AgentRequestResult`\>
38
+
39
+ ***
40
+
25
41
  ### agentGetRuntimeManifest()
26
42
 
27
43
  > **agentGetRuntimeManifest**(`request`): `Promise`\<`AgentRuntimeManifest`\>
@@ -54,6 +70,22 @@
54
70
 
55
71
  ***
56
72
 
73
+ ### agentListRequests()
74
+
75
+ > **agentListRequests**(`request`): `Promise`\<readonly `AgentVisibleRequestRecord`[]\>
76
+
77
+ #### Parameters
78
+
79
+ ##### request
80
+
81
+ `AgentListRequestsRequest`
82
+
83
+ #### Returns
84
+
85
+ `Promise`\<readonly `AgentVisibleRequestRecord`[]\>
86
+
87
+ ***
88
+
57
89
  ### agentListSecrets()
58
90
 
59
91
  > **agentListSecrets**(`request`): `Promise`\<readonly `AgentVisibleSecretRecord`[]\>
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -12,15 +12,15 @@
12
12
 
13
13
  ***
14
14
 
15
- ### methods
15
+ ### operation?
16
16
 
17
- > **methods**: readonly `string`[]
17
+ > `optional` **operation?**: `"dispatch_http"` \| `"custom_http"`
18
18
 
19
19
  ***
20
20
 
21
- ### operation?
21
+ ### read
22
22
 
23
- > `optional` **operation?**: `"dispatch_http"` \| `"custom_http"`
23
+ > **read**: `CapabilityReadPolicy`
24
24
 
25
25
  ***
26
26
 
@@ -30,12 +30,12 @@
30
30
 
31
31
  ***
32
32
 
33
- ### scope
33
+ ### secretAliases?
34
34
 
35
- > **scope**: `string`
35
+ > `optional` **secretAliases?**: readonly `string`[]
36
36
 
37
37
  ***
38
38
 
39
- ### secretAliases?
39
+ ### write
40
40
 
41
- > `optional` **secretAliases?**: readonly `string`[]
41
+ > **write**: `Omit`\<`CapabilityWritePolicy`, `"secretIds"`\>
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,8 +1,8 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
5
- # Interface: OwnerStoreSecretInput
5
+ # Interface: OwnerCreateSecretInput
6
6
 
7
7
  ## Properties
8
8
 
@@ -1,8 +1,8 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
5
- # Interface: VaultDeleteSecretInput
5
+ # Interface: OwnerRemoveSecretInput
6
6
 
7
7
  ## Properties
8
8
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,8 +1,8 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
5
- # Interface: OwnerWriteSecretInput
5
+ # Interface: OwnerUpdateSecretInput
6
6
 
7
7
  ## Properties
8
8
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**CBIO Node Runtime Agent API v1.58.0**](../README.md)
1
+ [**CBIO Node Runtime Agent API v1.60.0**](../README.md)
2
2
 
3
3
  ***
4
4