🏄‍♂️🇦🇺Sydney, Australia
Account created on 24 September 2008, almost 17 years ago
  • Co-Founder and Technical Director at PreviousNext 
  • Co-Founder and Technical Director at Skpr 
#

Merge Requests

More

Recent comments

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Updated deprecations message in two constructors (DirectoryWithMetadataDiscovery and DirectoryWithMetadataPluginDiscovery to be for removal in 12.x.

I think I'm ok to put back to RTBC in this case.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

This is ready for reviews now.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Testing this locally, I am getting

illegal_argument_exception: Can't update non dynamic settings [[index.analysis.filter.synonyms.type, index.analysis.analyzer.default.filter, index.analysis.filter.synonyms.lenient, index.analysis.analyzer.default.type, index.analysis.analyzer.default.tokenizer, index.analysis.filter.synonyms.synonyms]] for indices [content]

when saving mappings.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Trying a different approach with a aoss mode setting.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Looks like we will need to sort out Compatibility with AWS Open Search Serverless (AOSS) Active before we can properly test this. Postponing on that.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Re #10 this was done in 📌 Convert models to plugins, remove hardcoded model string checks Needs review and merged to 1.x.

I have rebased this MR on 1.x

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

📌 Convert models to plugins, remove hardcoded model string checks Needs review is in so this is unblocked.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Committed to 1.x. Thanks!

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

There's a long list of models. I guess people can create their own plugins if they want a model we don't include here? https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Great improvement. As discussed in slack we can deprecate titan v1 and add titan v2 in the follow-up 📌 Deprecate titan text embedding v1 and add v2 Closed: duplicate

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Committed to 1.x.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Committed to 3.x and 2.x

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Getting this error locally and it's failing the test:

Exception: Warning: Undefined array key "connector"
Drupal\ai_vdb_provider_opensearch\Form\OpenSearchConfigForm->validateConnectorConfigForm()() (Line: 125)

That looks like the trait in search_api_opensearch

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Closing this as duplicate.

As well as committing #3545869: Add a ConnectorFormTrait for re-use I have commited the provider code here to the 1.x branch of https://www.drupal.org/project/ai_vdb_provider_opensearch in 📌 Use the official opensearch-php library Active

Please continue with remaining work (such as adding tests!) in https://www.drupal.org/project/ai_vdb_provider_opensearch

All contribution credits have been added to both issues.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Commited to 1.x. Copied commit credits from 📌 Add support for AI module VDB Provider Active

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Updating title and IS

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Committed to 3.x and cherry-picked to 2.x.

Added credits from related issue 📌 Add support for AI module VDB Provider Active

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

No this is passing, I'm going to split of an issue to just add the trait to the core module for re-use.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Responded to suggestions. I don't think we should be adding new interfaces in this issue just for the sake of autowiring.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Committed to 2.x

There is currently a bug and I can't save contribution records, but I will come back and add them when it's fixed.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper made their first commit to this issue’s fork.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Committed to 2.x

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Rebase on 11.x

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

I added DeprecatedServicePropertyTrait for the removed $fileSystem property.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Some example code:

Create a plain old value object with some constraint attributes:

use Symfony\Component\Validator\Constraints as Assert;

class Embedding {

  public function __construct(
    #[Assert\Regex(
      pattern: '/^[A-Za-z0-9_-]+:[A-Za-z0-9_-]+$/',
      message: 'Id should be in the format "prefix:suffix"',
    )]
    readonly public string $id,
    #[Assert\NotBlank(message: 'Values should not be empty')]
    public array $values,
    #[Assert\NotBlank(message: 'Metadata should not be empty')]
    protected array $metadata,
  ) {}

Create a Symfony validator that looks for the attributes:

$validator = \Symfony\Component\Validator\Validation::createValidatorBuilder()
        ->enableAttributeMapping()
        ->getValidator();

Validate the object:

$embedding = new Embedding(
      'model1:embedding1',
      [0.1, 0.2, 0.3],
      ['source' => 'test']
    );

/** @var \Symfony\Component\Validator\ConstraintViolationListInterface $violations */
$violations = $validator->validate($embedding);
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

nit: looks like some of the docblock indentations are incorrect. I assume this would be fixed automatically with phpcbf?

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

@kingdutch wrote a great blog post on how using Symfony Runtime could help solve some of these issues https://www.alexandervarwijk.com/blog/2025-09-08-proposal-restructuring-...

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

In this issue, I showed how you can create a value object and validate it using Symfony Validator. It's a pretty clean solution IMO. 📌 Create an 'embedding' object that can be validated Active

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Rebase on 11.x

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

I like @danielveza 's idea of

I wonder if we can turn these into plugins or do something a little nicer than elseifs checking strings.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

We should decide on whether to fix the getConnector() fails or just duplicate some of the code and remove the trait.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Ok great. Thanks for the feedback.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Random fail

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

I've been granted maintainership of ai_vdb_provider_opensearch so we should just decide when the best time would be to push this MR over there.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Rebased on 11.x

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Thanks for your investigation in #12.

Given that, I think we should close this won't fix. Please re-open if there is an alternative approach.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Yep I think your changes are good.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

I'm thinking we should get things working here, then push it back to the ai_vdb_provider_opensearch module. Having it as a sub-module while the API is experimental is going to be problematic. We want to keep releases for the search_api_opensearch module fairly stable, while this might need multiple frequent releases until it's stable.

I've reached out to @fago and @Maximillian Mikus in Slack to see if we can be added as maintainers (if you agree) of ai_vdb_provider_opensearch

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper made their first commit to this issue’s fork.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Should we postpone this on 🐛 SearchApiAiSearchBackend should ask configured VDB provider to supply dependencies Active or can we work around it for now?

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Added the special chars to config with a default fallback.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

I think this is ready to go.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

I used xdebug to work through this code locally and the test skips \Normalizer::normalize() because class_exists('Normalizer') returns false.

However, it successfully converts ö to oe in \Drupal\Component\Transliteration\PhpTransliteration::replace() and so the test passes.

I can't really take this any further until we get some input from the transliteration maintainer (@amateescu). I'm changing the component to transliteration system for that.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

I made a naive attempt at a test. I'm not proficient any any other language besides English, so would like someone to weigh in and ensure we have the right test coverage here.

Ran the test-only pipeline to see if it fails as expected.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Thanks for the explanation and the MR. This needs a test so we can show it failing before and fixed after.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Looks like a straight forward fix.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Marking this as a feature request.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Added an Embedding object, a validator and unit test. Needs to be integrated into \Drupal\ai\Base\AiVdbProviderClientBase::validateRetrievedEmbedding() still.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

We are duplicating the methods in PluginBase e.g. getPluginId() and getPluginDefinition() and the $configuration property. Why not just extend PluginBase?

Also, reverted the key module in info.yml change.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

IMO it would make sense to stick with the Search API language already well established with the Drupal community.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Committed to 1.x

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Committed to 3.x and 2.x. Thanks!

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Created 📌 Add a BeforeIndexCreateEvent Active for the new event.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

NW for the failing test:

Drupal\Tests\workspaces\Kernel\WorkspacesFileItemTest::testGenerateSampleValue
RuntimeException: The "field_config" entity type can only be saved in the default workspace.
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

We have moved this to it's own project https://www.drupal.org/project/search_api_opensearch_semantic with the latest from MR !107.

Please continue any work over there.

Marking this issue as Fixed to provide contribution credits.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

As per @jonathan1055 comment in #75, 🐛 FileItem::generateSampleValue() should generate files with the actual allowed extensions Needs work I think we should go back to @dww's patch in comment #36 🐛 FileItem::generateSampleValue() should generate files with the actual allowed extensions Needs work .

Created an MR for that.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper made their first commit to this issue’s fork.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Re-ran the tests and they are back to green.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Tests are failing and comments in #9 need to be addressed. See https://www.drupal.org/docs/develop/issues/fields-and-other-parts-of-an-... for details on what makes an issue RTBC.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Would be good to have an alternative to \Drupal::service() that takes a class name so we can do this:

/**
 * @template T of object
 * @param class-string<T> $className
 * @return T
 */
function createInstance(string $className): object {}

...and have phpstan do the validation.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

This was just a reroll so leaving at RTBC

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Rebased on 11.x

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Updating the title to better reflect the direction.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

I added a vector document and an interface for a vector store.

🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

Updating to include the following params which are also unused:

  • protected EventDispatcherInterface $eventDispatcher
  • protected MessengerInterface $messenger
🇦🇺Australia kim.pepper 🏄‍♂️🇦🇺Sydney, Australia

kim.pepper created an issue.

Production build 0.71.5 2024